Python 安装包不会导入模块
Python installed package won't import modules
我想创建一个可以从 CLI 执行的名为 knife 的 python 应用程序,问题是它无法导入模块。
我的文件结构是这样的:
my_project/
knife/
__init__.py
knife.py
external.py
setup.py
我的 setup.py 看起来像这样:
#!/usr/bin/python
from setuptools import setup, find_packages
setup(name='Knife',
version='0.3',
description='Very cool project',
author='John Doe',
author_email='author@email.com',
packages=find_packages(),
py_modules=['knife.external'],
scripts=['knife/knife.py'],
)
我的 knife.py 看起来像这样:
#!/usr/bin/python
import external
def main():
print("Execute main function")
if __name__ == "__main__":
main()
所以在使用 setup.py install 安装模块后,我尝试 运行 刀但是一直抛出这个错误:
$ knife.py
Traceback (most recent call last):
File "/usr/bin/knife.py", line 4, in <module>
__import__('pkg_resources').run_script('Knife==0.3', 'knife.py')
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 723, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1643, in run_script
exec(script_code, namespace, namespace)
File "/usr/lib/python2.7/site-packages/Knife-0.3-py2.7.egg/EGG-INFO/scripts/knife.py", line 3, in <module>
__requires__ = 'Knife==0.3'
ImportError: No module named external
到底发生了什么?我该如何解决?
external.py也应该发货。所以 setup.py 添加了 external.py:
scripts=['knife/knife.py', 'knife/external.py'],
我想创建一个可以从 CLI 执行的名为 knife 的 python 应用程序,问题是它无法导入模块。
我的文件结构是这样的:
my_project/
knife/
__init__.py
knife.py
external.py
setup.py
我的 setup.py 看起来像这样:
#!/usr/bin/python
from setuptools import setup, find_packages
setup(name='Knife',
version='0.3',
description='Very cool project',
author='John Doe',
author_email='author@email.com',
packages=find_packages(),
py_modules=['knife.external'],
scripts=['knife/knife.py'],
)
我的 knife.py 看起来像这样:
#!/usr/bin/python
import external
def main():
print("Execute main function")
if __name__ == "__main__":
main()
所以在使用 setup.py install 安装模块后,我尝试 运行 刀但是一直抛出这个错误:
$ knife.py
Traceback (most recent call last):
File "/usr/bin/knife.py", line 4, in <module>
__import__('pkg_resources').run_script('Knife==0.3', 'knife.py')
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 723, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1643, in run_script
exec(script_code, namespace, namespace)
File "/usr/lib/python2.7/site-packages/Knife-0.3-py2.7.egg/EGG-INFO/scripts/knife.py", line 3, in <module>
__requires__ = 'Knife==0.3'
ImportError: No module named external
到底发生了什么?我该如何解决?
external.py也应该发货。所以 setup.py 添加了 external.py:
scripts=['knife/knife.py', 'knife/external.py'],