将python setup.py安装到备用路径中找不到已安装的软件包

时间:2010-12-10 03:23:01

标签: python install importerror setup.py

我有一个测试设置文件,我用它来制作一个简单的“hello world”脚本。我有一个名为mytest的包,其函数为hello。现在,我有一个非常简单的setup.py。如果我只是运行python setup.py install,一切正常。但是如果我想将lib安装到主文件夹(python setup.py install --home=/home/blah),则该软件包不再可用(在python中运行import mytest给我ImportError: No module named mytest)。

我应该手动将pth文件添加到site-packages文件夹中吗?我尝试了它(内容/home/blah/lib/python,我的包放在哪里)导入mytest工作正常。不应该自动完成吗?或者我错过了什么?

编辑:

安装输出:

ago@dellbert:~/py/mytest-0.1$ python setup.py install --home=/home/ago/py/
running install
running build
running build_py
copying src/mytest/mytest.py -> build/lib.linux-x86_64-2.6/mytest
running build_scripts
copying and adjusting src/main.py -> build/scripts-2.6
running install_lib
copying build/lib.linux-x86_64-2.6/mytest/mytest.py -> /home/ago/py//lib/python/mytest
byte-compiling /home/ago/py//lib/python/mytest/mytest.py to mytest.pyc
running install_scripts
copying build/scripts-2.6/main.py -> /home/ago/py//bin
changing mode of /home/ago/py//bin/main.py to 755
running install_egg_info
Removing /home/ago/py//lib/python/mytest-0.1.egg-info
Writing /home/ago/py//lib/python/mytest-0.1.egg-info

和setup.py:

from distutils.core import setup

setup(name='mytest',
      description='test',
      author='Ago',
      author_email='email',
      version='0.1',
      package_dir={'mytest': 'src/mytest'},
      packages=['mytest'],
      scripts=['src/main.py']
      )

文件夹结构:

-src:
   -mytest:
       __init__.py
       mytest.py
    main.py
setup.py

main.py只是一个可执行文件,它导入mytest并调用函数来打印hello world。但是我试图在python中运行import mytest以查看是否安装了lib。

2 个答案:

答案 0 :(得分:3)

我有兴趣看到python setup.py install --home=/home/blah命令的完整输出。如果目录不存在,或者不支持pth文件,您应该得到某种警告或错误,我相信安装实际上会失败。

查看setup.py文件也会有所帮助,因为它可能会把东西放在那里会导致破坏。

答案 1 :(得分:0)

似乎python至少统一了Unix和Windows环境中的参数。查看今天的python引用(https://docs.python.org/2/install/index.html,2017年12月),它表明在两个操作系统中都可以使用--prefix=<head installation path>。请查看参考部分"Alternate installation: Unix (the prefix scheme)""Alternate installation: Windows (the prefix scheme)"。我刚刚使用Oct2Py(Octave-to-Python转换器)对它进行了测试,使用easy_install或pip进行安装时遇到了麻烦,但是这种方式做得很好。

然后你的python包将进入(假设你使用Python 2.7)<head installation path>/lib/python2.7/site-packages<head installation path>/lib/python2.7/dist-packages