自动将已安装的PIP包添加到路径

Awn*_*Awn 7 python installation pip path

对于我的包,foo,我正在使用以下setup.py:

from setuptools import setup

setup(name='foo',
      version='0.0.1',
      description='Lol',
      url='https://github.com/foo/foo',
      author='legend',
      author_email='lol@gmail.com',
      license='GPLv3',
      packages=['foo'],
      install_requires=["bar"],
      entry_points = {'console_scripts': ['foo = foo:main']},
      keywords = ['foo'],
      zip_safe=False)
Run Code Online (Sandbox Code Playgroud)

在我的Arch系统上进行测试时,它会自动将脚本添加到PATH中,这样我就可以foo在命令行上运行,并自动运行main()函数.然后,我启动了一个虚拟机并在Windows 7上进行了测试.Pip安装好的软件包,但它不在我的路上!

救命?

Jan*_*sky 8

不要期望pipeasy_install修改您的PATH,他们的任务是将包安装到当前环境中。

在 Linux 上,如果你使用全局 Python 环境,你很可能需要 root 权限,所以你通常这样做:

$ sudo pip install <package>
Run Code Online (Sandbox Code Playgroud)

但是,这不是推荐的方法,因为它会破坏系统范围的 Python 环境(想象一下,有两个应用程序对同一包版本的要求略有不同,您可能会遇到问题)。

推荐的方法是使用某种virtualenv,它允许将python包安装到单独的python环境中,这也很容易删除和重新创建。

我如何将基于 python 的脚本安装到系统中

似乎您有基于 Python 的自定义脚本,您想在系统中使用它。

对于这种情况,我使用以下方法(假设virtualenv工具已安装到系统范围的 python 中):

$ mkdir ~/apps
$ mkdir ~/apps/myutil
$ cd ~/apps/myutil
$ virtualenv .env
$ source .env/bin/activate
(.env)$ pip install <package-or-more>
Run Code Online (Sandbox Code Playgroud)

现在你应该在~/apps/myutil/.env/bin目录中安装了由 安装的所有脚本pip,让我们称之为myscript(可以有更多)。

剩下的步骤是从某个已经存在的目录中创建符号链接PATH,例如进入/usr/local/bin

$ cd /usr/local/bin
$ sudo ln -s ~/apps/myutil/.env/bin/myscript
Run Code Online (Sandbox Code Playgroud)

从现在开始,myscript即使没有激活virtualenv ,您也可以调用命令。

更新脚本

如果您需要安装更高版本的脚本:

$ cd ~/apps/myutil
$ source .env/bin/activate
(.env)$ pip install --upgrade <package-or-more>
Run Code Online (Sandbox Code Playgroud)

链接脚本后,它将自动在最新版本中可用。

使用 virtualenvwrapper 命名

virtualenvwrapper允许您创建多个命名的 virtualenvs 并让您轻松激活和停用。在这种情况下,我执行以下操作:

$ mkvirtualenv bin-myscript
(bin-myscript)$ pip install <package-or-more>
(bin-myscript)$ which `myscript`
~/.Evns/bin-myscript/bin/myscript
(bin-myscript)$ cd /usr/local/bin
(bin-myscript)$ sudo ln -s ~/.Evns/bin-myscript/bin/myscript
Run Code Online (Sandbox Code Playgroud)

升级更简单:

$ workon bin-myscript
(bin-myscript)$ pip install --upgrade <package-or-two>
Run Code Online (Sandbox Code Playgroud)

你就完成了

毒物替代品

tox是自动创建虚拟环境和测试的好工具。我用它在我喜欢的目录中创建 virtualenv。有关更多信息,请参阅我的其他SO 答案


Mar*_*gur 5

setuptoolspip并且easy_install不修改系统PATH变量。通常<python directory>\Scripts,所有目录均默认安装脚本的目录通常是在安装过程中由Python安装程序添加到PATH的。

如果在安装过程中未将scripts文件夹添加到PATH中,则可以通过运行进行修复<python directory>\Tools\scripts\win_add2path.py。(请参阅如何查找Windows上安装Python的位置?


顺便说一下,上面的示例setup.py文件对我来说很好(在PATH中的Scripts目录中)。我用

python setup.py bdist_wheel
pip install dist\foo-0.0.1-py3-none-any.whl
Run Code Online (Sandbox Code Playgroud)

python setup.py sdist
pip install dist\foo-0.0.1.zip
Run Code Online (Sandbox Code Playgroud)