liangbeishu 2019-09-30 14:26 采纳率: 0%
浏览 1026

我给自己的Python程序写了一个setup.py文件,可以安装,但是无法import,执行可执行文件也报错怎么办?

我自己写了一个用于科学计算的Python程序,用于比较晶体结构相似性,对大批量的晶体结构自动分类,方法原理我在这篇文章里描述了[J. Phys. Condens. Matter 2017, 29, 165901]。现在我想做成一个Python egg,写了一个setup.py文件如下:

from setuptools import setup, find_packages


setup(
    name='spap',
    version='0.3.0',
    packages=find_packages(),
    license='GPL',
    platforms="Independant",
    # install_requires=['numpy>=1.8.0', 'spglib>=1.10.0', 'ase>=3.13.0'],
    install_requires=['numpy', 'spglib', 'ase'],
    entry_points={
        'console_scripts': [
            'spap = src.spap:start_cli',
        ]
    }
)

我用sudo python3 setup.py install能安装,安装包的目录如下所示:

./
├── build
│   ├── bdist.linux-x86_64
│   └── lib
│       └── src
│           ├── ccf.py
│           ├── __init__.py
│           └── spap.py
├── dist
│   └── spap-0.3.0-py3.6.egg
├── example
│   └── run.py
├── setup.py
├── spap.egg-info
│   ├── dependency_links.txt
│   ├── entry_points.txt
│   ├── PKG-INFO
│   ├── requires.txt
│   ├── SOURCES.txt
│   └── top_level.txt
└── src
    ├── ccf.py
    ├── __init__.py
    └── spap.py

8 directories, 15 files

可以安装到系统上,pip3 list能显示出来,我执行spap -h命令就出错:

Traceback (most recent call last):
  File "/usr/local/bin/spap", line 11, in <module>
    load_entry_point('spap==0.3.0', 'console_scripts', 'spap')()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 480, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2693, in load_entry_point
    return ep.load()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2324, in load
    return self.resolve()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2330, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/local/lib/python3.6/dist-packages/spap-0.3.0-py3.6.egg/src/spap.py", line 70, in <module>
ModuleNotFoundError: No module named 'ccf'

而且在python3里import spap输出如下:

>>> import spap
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'spap'

请问这个怎么办?

  • 写回答

1条回答

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥20 jupyter保存图像功能的实现
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符