setup.py并安装python项目
我已经浏览了setup.py文档,但对于我认为应该非常基本的内容,仍然有一些困难 我已经将其分解为一个简单的示例项目,我正在尝试运行该项目,我的项目的目录布局如下所示:setup.py并安装python项目,python,Python,我已经浏览了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
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"],
)
#! /usr/bin/env python
import extern.mytest as mytest
mytest.print_test()
#!/usr/bin/env python
def print_test():
print "YAY"
myproject/src/main.py:
#!/usr/bin/env python
from distutils.core import setup
setup(name = "myproject",
package_dir = {'':"src"},
packages = ["extern"],
scripts = ["src/main.py"],
)
#! /usr/bin/env python
import extern.mytest as mytest
mytest.print_test()
#!/usr/bin/env python
def print_test():
print "YAY"
myproject/src/extern/mytest.py:
#!/usr/bin/env python
from distutils.core import setup
setup(name = "myproject",
package_dir = {'':"src"},
packages = ["extern"],
scripts = ["src/main.py"],
)
#! /usr/bin/env python
import extern.mytest as mytest
mytest.print_test()
#!/usr/bin/env python
def print_test():
print "YAY"
myproject/src/extern/\u init\uuy.py为空。
我正在以以下方式运行setup.py:
setup.py install --prefix ~/local
setup.py将在没有错误的情况下完成,并将main.py移动到~/local/bin,但是当我运行它时,会出现以下错误:
ImportError: No module named extern.mytest
知道我做错了什么吗?谢谢 问题在于模块不在
sys.path
下,因此import
语句无法找到该模块
在我的例子中,extern
模块安装在~/local/lib/python2.7/site packages/extern
下。但是,请注意,在安装过程中,安装路径被任意设置为~/local
要解决这个问题,您可以将PYTHONPATH
变量设置为模块安装的位置,或者将该路径添加到main.py
中的sys.path
或者,代替:
setup.py install --prefix ~/local
使用:
这将安装在您的用户站点软件包目录中(
~/.local
,在我的平台中),python将能够毫无问题地找到该软件包。但是,您可能需要更改您的路径
环境变量以包含~/.local/bin
,作为后续操作,@jcollado,安装到python发行版的站点包
目录中……会被权限错误阻止吗?谢谢,我在发布后遇到了--user选项,但将site.user_site默认值设置为~/.local似乎仍然很愚蠢。我应该用另一种方式在本地安装东西,还是这只是我应该接受的?@Droogans如果你指的是像/usr/local/lib/python2.x/site packages
,是的,那需要root
权限。@Geoff这很奇怪,我已经尝试过了,它将模块文件安装在~/local/lib/python/
下,而该文件不在我的python路径中。@Weboide感谢您的拼写修复。