更新python模块时它是活动的

时间:2015-10-22 08:33:25

标签: python module

是否可以在运行脚本中使用python模块时更新它?

情况如下: 1)我有一个使用pandas 0.15.2运行的脚本。这是一项长期的数据处理任务,应至少继续运行一周。 2)我想在同一台机器上运行另一个脚本,这需要pandas 0.16。

我可以做2)而不打断1)?

2 个答案:

答案 0 :(得分:3)

如果脚本仍在运行,则替换依赖项可能根本不会影响它 - 代码已经存在于内存中。

尽管如此,安全比抱歉更好。我会在virtualenv中安装另一个脚本,在其中你可以安装你想要的任何版本的模块,而不会影响其他任何东西。

答案 1 :(得分:2)

在另一个位置安装pandas 0.16。例如,在我的系统上,我创建了目录/ Users / kteague / pytest /进行安装。然后我使用pip中的--target选项安装到该位置:

$ pip install --target /Users/kteague/pytest pandas
Collecting pandas
  Using cached pandas-0.17.0-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Collecting pytz>=2011k (from pandas)
  Using cached pytz-2015.6-py2.py3-none-any.whl
Collecting python-dateutil>=2 (from pandas)
  Using cached python_dateutil-2.4.2-py2.py3-none-any.whl
Collecting numpy>=1.7.0 (from pandas)
  Using cached numpy-1.10.1-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Collecting six>=1.5 (from python-dateutil>=2->pandas)
  Downloading six-1.10.0-py2.py3-none-any.whl
Installing collected packages: pytz, six, python-dateutil, numpy, pandas
Successfully installed numpy pandas python-dateutil pytz six-1.9.0

现在您可以先导出PYTHONPATH指向该位置。脚本从终端开始运行,其中PYTHONPATH = / Users / kteague / pytest将使用pandas 0.1.7而不是在默认的site-packages目录中安装任何版本的pandas。

$ export PYTHONPATH=/Users/kteague/pytest/

使用python解释器中的setuptools确保您的终端导入所需的pandas版本:

$ python
Python 3.5.0 (v3.5.0:374f501f4567, Sep 12 2015, 11:00:19) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pkg_resources
>>> pkg_resources.require("pandas")[0].version
'0.17.0'