【问题标题】:How to use setuptools to install in a custom directory?如何使用 setuptools 安装在自定义目录中?
【发布时间】:2014-09-04 22:04:13
【问题描述】:

我有一个 Python 包需要安装在 /usr/lib/python2.7/dist-packages 或任何其他特定目录中。

每当我运行setup.py 脚本时,它都会给出以下输出:

root@abc44:~/som_dir/plugins/abc$python setup.py install
running install
running bdist_egg
running egg_info
writing abcNewPlugin.egg-info/PKG-INFO
writing top-level names to abcNewPlugin.egg-info/top_level.txt
writing dependency_links to abcNewPlugin.egg-info/dependency_links.txt
writing entry points to abcNewPlugin.egg-info/entry_points.txt
reading manifest file 'abcNewPlugin.egg-info/SOURCES.txt'
writing manifest file 'abcNewPlugin.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
warning: install_lib: 'build/lib.linux-x86_64-2.7' does not exist -- no Python modules to install

creating build/bdist.linux-x86_64/egg
creating build/bdist.linux-x86_64/egg/EGG-INFO
installing scripts to build/bdist.linux-x86_64/egg/EGG-INFO/scripts
running install_scripts
running build_scripts
creating build/bdist.linux-x86_64/egg/EGG-INFO/scripts
copying build/scripts-2.7/abc_plugin.py -> build/bdist.linux-x86_64/egg/EGG-INFO/scripts
changing mode of build/bdist.linux-x86_64/egg/EGG-INFO/scripts/abc_plugin.py to 775
copying abcNewPlugin.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
copying abcNewPlugin.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying abcNewPlugin.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying abcNewPlugin.egg-info/entry_points.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying abcNewPlugin.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating 'dist/abcNewPlugin-0.0-py2.7.egg' and adding 'build/bdist.linux-x86_64/egg' to it
removing 'build/bdist.linux-x86_64/egg' (and everything under it)
Processing abcNewPlugin-0.0-py2.7.egg
Removing /usr/local/lib/python2.7/dist-packages/abcNewPlugin-0.0-py2.7.egg
Copying abcNewPlugin-0.0-py2.7.egg to /usr/local/lib/python2.7/dist-packages
abcNewPlugin 0.0 is already the active version in easy-install.pth
Installing abc_plugin.py script to /usr/local/bin

Installed /usr/local/lib/python2.7/dist-packages/abcNewPlugin-0.0-py2.7.egg
Processing dependencies for abcNewPlugin==0.0
Finished processing dependencies for abcNewPlugin==0.0

有没有办法在setuptools中指定包的安装目录? 我尝试了--install-dir 选项,但它给出了一个错误:

$sudo python setup.py install --install-dir=/usr/lib/python2.7/dist-packages
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
   or: setup.py --help [cmd1 cmd2 ...]
   or: setup.py --help-commands
   or: setup.py cmd --help

error: option --install-dir not recognized

我也无法使用--prefix 选项。

【问题讨论】:

    标签: python setuptools


    【解决方案1】:

    由于python setup.py install 命令只是easy_install 的快捷方式,请尝试直接运行它,它有--install-dir 选项:

    easy_install . --install-dir /usr/lib/python2.7/dist-packages
    

    您可以通过python setup.py install -h 获得其他可用选项,以防您需要更多选项,但这些选项相当神秘。

    【讨论】:

    • 在 python3 上(至少)标志现在是 --prefix 而不是 --install-dir 您还可以定位 user site-package ('/home/user/. local/lib/python3.5/site-packages' ) 使用--user
    【解决方案2】:

    --install-lib 设置模块的安装目录

    python setup.py install --install-lib /src/lib/
    

    【讨论】:

      【解决方案3】:

      尝试使用--prefix,例如python3 setup.py install --prefix $HOME/destination。 不要忘记更新您的 PYTHONPATH 变量

      【讨论】:

        【解决方案4】:

        由于某种原因,--prefix 对我不起作用。目前使用的是 Debian/buster 系统:

        % python --version
        Python 3.9.2
        

        快速检查:

        % apt-get source python3-openslide
        % cd openslide-python-1.1.2
        % python setup.py install --prefix /tmp/foo
        % find /tmp/foo
        /tmp/foo
        /tmp/foo/lib
        /tmp/foo/lib/python3.9
        /tmp/foo/lib/python3.9/site-packages
        /tmp/foo/lib/python3.9/site-packages/openslide_python-1.1.2-py3.9-linux-x86_64.egg
        

        而在我的情况下,我不得不:

        % python setup.py install --root /tmp/bar
        % find /tmp/bar
        /tmp/bar
        /tmp/bar/usr
        /tmp/bar/usr/local
        /tmp/bar/usr/local/lib
        /tmp/bar/usr/local/lib/python3.9
        /tmp/bar/usr/local/lib/python3.9/dist-packages
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide/__init__.py
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide/deepzoom.py
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide/lowlevel.py
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide/_version.py
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide/__pycache__
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide/__pycache__/deepzoom.cpython-39.pyc
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide/__pycache__/__init__.cpython-39.pyc
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide/__pycache__/_version.cpython-39.pyc
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide/__pycache__/lowlevel.cpython-39.pyc
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide/_convert.cpython-39-x86_64-linux-gnu.so
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide_python-1.1.2.egg-info
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide_python-1.1.2.egg-info/PKG-INFO
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide_python-1.1.2.egg-info/top_level.txt
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide_python-1.1.2.egg-info/SOURCES.txt
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide_python-1.1.2.egg-info/dependency_links.txt
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide_python-1.1.2.egg-info/requires.txt
        /tmp/bar/usr/local/lib/python3.9/dist-packages/openslide_python-1.1.2.egg-info/zip-safe
        

        【讨论】:

          猜你喜欢
          • 2012-12-30
          • 2016-07-11
          • 2012-11-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多