我自己写了一个用于科学计算的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'
请问这个怎么办?