在我的Mac OS X 10.9 Mavericks机器上,我安装了Python 2.7.6,PySide 1.2.1和mysql-python 1.2.3(所有这些都使用Homebrew和Pip安装)。因为我在安装任何东西之前编辑/ etc / paths以/ usr / local / bin开头,所有模块都安装在/usr/local/lib/python2.7/site-packages和'which python'返回/ USR / local / bin目录/蟒蛇。一切顺利。
是否有可能以某种方式将这些模块复制到服务器位置,以便导入其他OS X机器(而不是在所有其他OS X机器上本地安装)?
答案 0 :(得分:2)
我强烈建议您使用Virtualenv来管理您的Pip包。
它允许您:
site-packages
; site-packages
,以便在从OS X工作站移动到Linux服务器时不会发生冲突; requirements.txt
文件,其中包含任何给定项目的Virtualenv中安装的所有库的确切名称和版本(此文件将提交到您的源存储库)最后:
当然,其中一些功能是由Pip提供的,但Virtualenv将它们全部置于故障安全环境中。
所以我在virtualenv中安装了几个模块,但是如何将它们放在服务器位置,并且可以在不在其他机器上运行virtualenv的情况下读取/导入它们?
你提到了一些需要编译成二进制模块的模块,比如mysql-python。它们不能在不同的机器之间移植。
其他模块(仅限Python文件)确实可以复制到其他计算机的site-packages
。但即使是那些,最好使用virtualenv,而不是将随机垃圾放入服务器的site-packages
目录。
在服务器位置,您应该安装一个干净的virtualenv(当然使用正确的Python版本),然后使用requirements.txt
文件从源安装所有必需的模块:
$ mkdir ~/virtualenv
$ python2.x virtualenv.py ~/virtualenv/your_app
$ ~/virtualenv/your_app/bin/pip install -r requirements.txt
virtualenv路径只是一个建议。您可以从当前计算机生成需求文件:
$ pip freeze > requirements.txt