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

时间:2016-03-18 19:01:37

标签: python path installation pip

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

foo

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

帮助?

2 个答案:

答案 0 :(得分:4)

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

在Linux上,如果使用全局Python环境,则可能需要root权限,因此通常会这样做:

$ sudo pip install <package>

但是,这不是推荐的方法,因为它破坏了系统范围的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>

现在您将在~/apps/myutil/.env/bin目录中安装pip安装的所有脚本,让我们称之为myscript(可能还有更多)。

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

$ cd /usr/local/bin
$ sudo ln -s ~/apps/myutil/.env/bin/myscript

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

更新脚本<​​/ h2>

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

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

当您链接了脚本时,它将自动以最新版本提供。

使用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

升级更简单:

$ workon bin-myscript
(bin-myscript)$ pip install --upgrade <package-or-two>

你完成了

替代tox

tox是自动创建virtualenvs和测试的绝佳工具。我用它来创造 virtualenvs在我喜欢的目录中。有关详细信息,请参阅我的其他SO answer

答案 1 :(得分:3)

setuptoolspipeasy_install不修改系统PATH变量。默认情况下,所有这些目录都安装脚本的<python directory>\Scripts目录通常在安装过程中由Python安装程序添加到PATH中。

如果在安装过程中未将脚本文件夹添加到PATH,则可以通过运行<python directory>\Tools\scripts\win_add2path.py来解决此问题。 (参见 How can I find where Python is installed on Windows?

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

测试了它
python setup.py bdist_wheel
pip install dist\foo-0.0.1-py3-none-any.whl

python setup.py sdist
pip install dist\foo-0.0.1.zip