我正在寻找一种方法来制作一个virtualenv,其中只包含基本python安装的一些库(我选择).
更具体一点,我正在尝试在virtualenv的创建过程中将matplotlib导入virtualenv.它无法通过pip或easy_install高效安装,因为它错过了一些fortran编译器库.我到目前为止的方式是手动复制
/usr/lib/python2.7/dist-packages/ to virtualenv_name/lib/python2.7/dist-packages/
Run Code Online (Sandbox Code Playgroud)
但是这可以防止yolk注册manully导入的链接(打印virtualenv中所有当前可用的库).
那么,有没有办法做一个选择性的变体
virtualenv --system-site-packages
Run Code Online (Sandbox Code Playgroud) 我已经安装了创建的virtualenv machinelearn并安装在该环境中的几个Python模块(大熊猫,SciPy的和sklearn).
当我运行jupyter笔记本时,我可以在我的笔记本中导入pandas和scipy - 但是,当我尝试导入sklearn时,我收到以下错误消息:
import sklearn
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-8fd979e02004> in <module>()
----> 1 import sklearn
ImportError: No module named 'sklearn'
Run Code Online (Sandbox Code Playgroud)
我能够在命令行导入所有模块 - 所以我知道它们已经成功安装:
(machinelearn) me@yourbox:~/path/to/machinelearn$ python -c "import pandas, scipy, sklearn"
(machinelearn) me@yourbox:~/path/to/machinelearn$
Run Code Online (Sandbox Code Playgroud)
如何在运行virtualenv的jupyter笔记本中导入sklearn?
我使用virtualenvwrapper文档创建了一个虚拟环境,如下所示:
$ pip install virtualenvwrapper
$ export WORKON_HOME=~/Envs
$ mkdir -p $WORKON_HOME
$ source /usr/local/bin/virtualenvwrapper.sh
$ mkvirtualenv env1
Run Code Online (Sandbox Code Playgroud)
它在大多数情况下工作正常,但我遇到了一些Django问题,需要我在我的虚拟环境之外安装一些全局软件包.一旦我安装了这些软件包,如何更新我的虚拟环境以引入这些新软件包?或者我是否需要从头开始重新创建环境?
我可以使用"--no-site-package"创建一个忽略全局站点包的新virtualenv.是否有可能更改现有的virtualenv(没有"--no-site-package"创建)也忽略全局网站包?(因此它的工作方式与首先使用"--no-site-package"创建的方式相同.)
提前致谢,
塞巴斯蒂安