我希望环境变量DJANGO_SETTINGS_MODULE根据我对工作的说法而改变.在我看来,我想把它设置好,.virtualenvs/postmkvirtualenv但我的试验没有效果.
ftpmaint@millstone:~$ cat ~/.virtualenvs/postmkvirtualenv
#!/bin/bash
# This hook is run after a new virtualenv is activated.
export DJANGO_SETTINGS_MODULE=newproject.settings
ftpmaint@millstone:~$ echo $DJANGO_SETTINGS_MODULE
az.settings
ftpmaint@millstone:~$ workon newproject
(newproject)ftpmaint@millstone:~$ echo $DJANGO_SETTINGS_MODULE
az.settings
Run Code Online (Sandbox Code Playgroud)
有人会让我直截了当; 我应该把那个出口放在哪里?
另外,当我停用时它会恢复吗?如果没有,是否有一些自然的方法来恢复它?
我最近干净安装了Mac OS 10.10.3,并尝试建立一个python环境.但我无法让virtualenvwrapper工作.
我使用Homebrew安装了python 2和3.
$ which python
/usr/local/bin/python
$ which python3
/usr/local/bin/python3
$ which pip
/usr/local/bin/pip
$ which virtualenv
/usr/local/bin/virtualenv
$ which virtualenvwrapper.sh
/usr/local/bin/virtualenvwrapper.sh
Run Code Online (Sandbox Code Playgroud)
以下是我的.bash_profile中的行
export PATH=/usr/local/bin:$PATH
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh
Run Code Online (Sandbox Code Playgroud)
virtualenv独立工作:$ source bin/activate
但是当我采购virtualenvwrapper.sh时.我收到以下错误消息.
/usr/local/opt/python/bin/python2.7: No module named virtualenvwrapper
virtualenvwrapper.sh: There was a problem running the initialization hooks.
If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python and that PATH is
set properly.
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚出了什么问题.当我在终端回应VIRTUALENVWRAPPER_PYTHON时.它返回正确的路径.事实上,我的所有路径都是正确的.他们都指向自制程序目录.
我怎样才能让它发挥作用?
简短问题
使用virtualenv/virtualenvwrapper是否可以为python链接到特定虚拟环境的调用添加前缀?
背景
我想有一个使用brew安装的 Python 2.7的多个虚拟环境,但有些运行在64位模式和其他32位模式.
下面我有我的OS X开发的典型设置.我想要添加到python调用的特定前缀是arch -i386强制python以32位模式运行.同样,最重要的部分是它只能在调用后添加workon env32(如示例所示).我知道我可以在.bash_profile中设置一个别名,但每次创建/删除虚拟环境时都必须修改它.
编辑
为了详细说明我使用简单别名的问题,可能有超过1 32位的虚拟环境.这就是说,调用workon将理想地添加前缀来python调用,因此终端的工作流程将是相同的.调用后的含义workon env_x_32我可以使用,python并且arch -i386在使用终端时对我来说是透明的.
Python安装:
> brew install python --framework --universal
Run Code Online (Sandbox Code Playgroud)
创建虚拟环境(安装pip,virtualenv和virtualenvwrapper之后):
> mkvirtualenv env_1_64 --no-site-packages
> mkvirtualenv env_1_32 --no-site-packages
> mkvirtualenv env_2_64 --no-site-packages
> mkvirtualenv env_2_32 --no-site-packages
Run Code Online (Sandbox Code Playgroud)
64位用法:
> workon env_1_64
> python myscript.py
> workon env_2_64
> python my_other_project_script.py
Run Code Online (Sandbox Code Playgroud)
32位用法:(当前/非理想)
> workon env_1_32
> arch -i386 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在家里的新开发机器上设置开发环境.我刚刚安装了Ubuntu,现在我正在尝试从我们的Web服务器克隆远程仓库并安装其依赖项,以便我可以开始工作.
到目前为止,我已经手动安装virtualenv并virtualenvwrapper从pypi和编辑我的bash.rc适当来源我的virtualenvs当我启动我的终端.然后我克隆了我的回购~/projects/project-name/websitename.com.然后我用virtualenvwrapper,以mkvirtualenv env-name从~/projects/project-name/websitename.com.这恰好反映了file-structure/setup我克隆的网络服务器.到现在为止还挺好.
我登录到dev服务器并在virtualenv那里激活并使用pip freeze -l > req.txt将依赖项列表和scp呈现给我的本地计算机.我virtualenv在本地计算机上激活,导航到~/projects/project-name/websitename.com并执行pip install -r path-to-req.txt,它会遍历所有依赖项,就像没有错.但是,当我试图manage.py syncdb得到一个关于没有找到核心django包的错误.我勒个去?所以我想知道Django无法安装,我run pip install Django==1.5.1和它成功完成.我必须再次设置我的网站,并获得关于没有命名模块的另一个错误django_extensions.好吧,到底是怎么回事,我刚用pip安装了所有这些包?!
所以我pip freeze -l > test.txt和cat test.txt它列出了什么?Django==1.5.1,我刚刚手动安装的一个包.为什么不将我的依赖项从我的指定列表安装到我的virtualenv?我在这里搞砸了什么?
-编辑 - - - - - - -
哪个点子给了我在我的virtualenv pip的路径
我只有1个virtualenv,它被激活
在谷歌搜索有关 virtualenv 之后,我的印象是应该为我创建的每个项目(相关并使用相同的站点包)创建虚拟环境。
这是真的吗?为什么?为什么?
另外,如果我目前正在为我的一个项目使用 virtualenv,当软件包升级出现时,我将如何进行升级?
我试图在virtualenvwrapper环境中安装gdal(pip install gdal),但是我收到了这个错误:
error: command 'gcc' failed with exit status 1
----------------------------------------
Failed building wheel for gdal
Failed to build gdal
Run Code Online (Sandbox Code Playgroud)
我也试过"pip install --no-install GDAL",但没有选择--no-install
我该怎么办 !?
我正在使用virtualenvwrapper 将这个软件包安装到virtualenv中并使用此命令进行pip:
pip install -e git+git://github.com/mr-stateradio/django-exchange.git#egg=django_exchange-master
Run Code Online (Sandbox Code Playgroud)
有趣的是,然后将包放入src文件夹中,而不是放入我期望的site-packages文件夹中.包放在这个文件夹中:
<path-to-my-virtual-env>/testenv/src/django-exchange-master/exchange
Run Code Online (Sandbox Code Playgroud)
而不是这个:
<path-to-my-virtual-env>/testenv/lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)
我假设我使用的pip install命令或包的setup.py有问题.
我创建了一个虚拟环境,virtualenvwrapper然后我尝试在其中安装django pip.但是由于python版本中的冲突,我一直收到错误.
$ mkvirtualenv env
$ workon env
$ pip install django
Downloading/unpacking django
Cleaning up...
Exception:
Traceback (most recent call last):
File "/Users/mingot/virtualenvs/env/lib/python2.7/site-packages/pip/basecommand.py", line 134, in main
status = self.run(options, args)
File "/Users/mingot/virtualenvs/env/lib/python2.7/site-packages/pip/commands/install.py", line 236, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "/Users/mingot/virtualenvs/env/lib/python2.7/site-packages/pip/req.py", line 1085, in prepare_files
url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
File "/Users/mingot/virtualenvs/env/lib/python2.7/site-packages/pip/index.py", line 201, in find_requirement
page = self._get_page(main_index_url, req)
File "/Users/mingot/virtualenvs/env/lib/python2.7/site-packages/pip/index.py", line 554, in _get_page
return HTMLPage.get_page(link, req, cache=self.cache)
File "/Users/mingot/virtualenvs/env/lib/python2.7/site-packages/pip/index.py", line 671, in get_page …Run Code Online (Sandbox Code Playgroud) 当我移动项目文件夹时,我必须手动更新.project文件中的项目路径,以使workon命令工作.是否可以自动更新路径?
pip识别全局安装包..?!:-(
我用virtualenvwrapper preactivate钩来清洁PYTHONPATH,
export PYTHONPATH=""
Run Code Online (Sandbox Code Playgroud)
然后echo $ PYTHONPATH返回空字符串,但这没有帮助.
怎么了?
bentzy@lama:~$ mkvirtualenv test
New python executable in test/bin/python
Installing setuptools............done.
Installing pip...............done.
virtualenvwrapper.user_scripts creating /home/bentzy/.virtualenvs/test/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/bentzy/.virtualenvs/test/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/bentzy/.virtualenvs/test/bin/preactivate
virtualenvwrapper.user_scripts creating /home/bentzy/.virtualenvs/test/bin/postactivate
virtualenvwrapper.user_scripts creating /home/bentzy/.virtualenvs/test/bin/get_env_details
(test)bentzy@lama:~$ which pip
/home/bentzy/.virtualenvs/test/bin/pip
(test)bentzy@lama:~$ sudo pip install simplejson
Requirement already satisfied (use --upgrade to upgrade): simplejson in /usr/lib /python2.7/dist-packages
Cleaning up...
(test)bentzy@lama:~$ echo $PYTHONPATH
(test)bentzy@lama:~$ pip --version
pip 1.2.1 from /home/bentzy/.virtualenvs/test/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg (python 2.7)
Run Code Online (Sandbox Code Playgroud)