说我正在开发一个名为Example的命令行应用程序,其调用命令为example
。我写了一个setup.py,看起来像这样:
import setuptools
setuptools.setup(
name='example',
version='1.0',
entry_points = {
'console_scripts': [
'example=example.run:main'
]
},
...
)
此文件与名为example
的模块(及其__init__.py
以及所有模块)位于同一级别。其中包含run.py
,具有main
函数
当我使用...将这个进行中的项目安装为符号链接时
pip3 install -e .
...工作正常。我可以使用example
命令在任何地方运行它。
但是当我按照these instructions上传到PyPI时,然后使用...安装它。
pip3 install example
...说...
Traceback (most recent call last):
File "/usr/local/bin/example", line 7, in <module>
from example.run import main
ModuleNotFoundError: No module named 'example'
当然,该项目实际上并未称为example
;它的名称没有任何冲突。
答案 0 :(得分:0)
如果要从文件example
安装模块example.py
,则可以
需要将其作为Python模块添加到setup.py
:
setuptools.setup(
…
py_modules=['example'],
…
)
如果example
是目录example/
的软件包,则您
需要将其添加为软件包:
setuptools.setup(
…
packages=['example'],
…
)
如果example
包含来自example/*/
子目录的子包,则您
需要列出所有子包:
setuptools.setup(
…
packages=['example', 'example.sub1', 'example.sub2'],
…
)
您可以使setuptools
列出您的所有子软件包:
setuptools.setup(
…
packages=setuptools.find_packages()
…
)