我查看了setup.py文档,但仍然遇到一些我认为应该非常基本的困难。
我已将其分解为一个我正在尝试运行的简单示例项目,我的项目目录布局如下:
myproject
setup.py
src\
main.py
extern\
__init__.py
mytest.py
的myproject / setup.py:
#!/usr/bin/env python
from distutils.core import setup
setup(name = "myproject",
package_dir = {'':"src"},
packages = ["extern"],
scripts = ["src/main.py"],
)
的myproject / SRC / main.py:
#! /usr/bin/env python
import extern.mytest as mytest
mytest.print_test()
的myproject / SRC /的extern / mytest.py:
#!/usr/bin/env python
def print_test():
print "YAY"
myproject / src / extern / _ init _。py为空白。
我正在运行setup.py:
setup.py install --prefix ~/local
setup.py将完成没有错误并将main.py移动到〜/ local / bin但是当我运行它时我收到以下错误:
ImportError: No module named extern.mytest
知道我做错了什么吗?谢谢!
答案 0 :(得分:7)
问题是该模块不在sys.path
之下,而import
语句无法找到该模块。
就我而言,extern
模块安装在~/local/lib/python2.7/site-packages/extern
下。但请注意,安装过程中安装路径被任意设置为~/local
。
要解决此问题,您可以将PYTHONPATH
变量设置为模块的安装位置,或将该路径添加到sys.path
中的main.py
。
或者,而不是:
setup.py install --prefix ~/local
使用:
setup.py install --user
这将安装在您的用户站点包目录(我的平台中的~/.local
)中,python将能够毫无问题地找到该包。但是,您可能需要更改PATH
环境变量以包含~/.local/bin
。