对于我的包,foo,我使用以下setup.py:
foo
在我的Arch系统上进行测试时,它会自动将脚本添加到PATH中,这样我就可以在命令行上运行`update_option('my_cron_test', current_time())`;
,并自动运行main()函数。然后,我启动了一个虚拟机并在Windows 7上进行了测试.Pip安装好的软件包,但它不在我的路上!
帮助?
答案 0 :(得分:4)
不要指望pip
或easy_install
修改您的PATH
,他们的任务是将软件包安装到当前环境中。
在Linux上,如果使用全局Python环境,则可能需要root权限,因此通常会这样做:
$ sudo pip install <package>
但是,这不是推荐的方法,因为它破坏了系统范围的Python环境(假设有两个应用程序对同一个软件包版本有不同的要求,你可能会遇到问题)。
推荐的方法是使用某种virtualenv,它允许将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
。
如果您需要安装更高版本的脚本:
$ cd ~/apps/myutil
$ source .env/bin/activate
(.env)$ pip install --upgrade <package-or-more>
当您链接了脚本时,它将自动以最新版本提供。
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
是自动创建virtualenvs和测试的绝佳工具。我用它来创造
virtualenvs在我喜欢的目录中。有关详细信息,请参阅我的其他SO answer
答案 1 :(得分:3)
setuptools
,pip
和easy_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