使用时应该遵循什么样的目录结构virtualenv?例如,如果我正在构建一个WSGI应用程序并创建一个名为的virtualenv,foobar我将从一个目录结构开始,如:
/foobar
/bin
{activate, activate.py, easy_install, python}
/include
{python2.6/...}
/lib
{python2.6/...}
Run Code Online (Sandbox Code Playgroud)
创建此环境后,将自己放置在何处:
与virtualenv目录有关?
(假设我已经知道virtualenv目录应该去哪里了.)
我很困惑,我应该把我的virtualenvs放在哪里.
在我的第一个django项目中,我使用命令创建了项目
django-admin.py startproject djangoproject
Run Code Online (Sandbox Code Playgroud)
然后我进入djangoproject目录并运行命令
virtualenv env
Run Code Online (Sandbox Code Playgroud)
它创建了与内部djangoproject目录相同级别的虚拟环境目录.
这是为这个特定项目创建virtualenv的错误位置吗?
我得到的印象是,大多数人将所有的virtualenvs保存在一个完全不同的目录中,例如~/virtualenvs,然后使用virtualenvwrapper在它们之间来回切换.
有没有正确的方法来做到这一点?
这个问题不重复.
它不仅适用于重命名虚拟环境,还适用于将其实际移动到其他目录,包括可能包含的其他用户目录.
这与仅重命名虚拟环境不同,特别是对于不熟悉virtualenvs的人.
如果我创建了一个virtualenv,并将其移动到另一个文件夹,它仍然可以工作吗?
$ virtualenv -p /usr/bin/python3 /home/me/Env/my-python-venv
$ source Env/my-python-venv/bin/activate
(my-python-venv) $
Run Code Online (Sandbox Code Playgroud)
......当天晚些时候,虚拟环境MOVED ......
(my-python-venv) $ deactivate
$ mkdir -p /home/me/PeskyPartyPEnvs
$ mv /home/me/Env/my-python-venv /home/me/PeskyPartyPEnvs/
Run Code Online (Sandbox Code Playgroud)
题:
这会有用吗?
$ source /home/me/PeskyPartyPEnvs/my-python-venv/bin/activate
(my-python-venv) $ /home/me/PeskyPartyPEnvs/my-python-venv/bin/pip3 install foaas
Run Code Online (Sandbox Code Playgroud)
我的意思是,这不是一个关于尝试这个的智慧的问题(当然,除非这种智慧是幽默的),更多的是关于它是否可能.我真的想知道在Python 3中是否可以这样做,或者我是否只需要将其搞砸并克隆它.
我可以mv在virtualenv没有悲伤的情况下这样做吗?我确实想避免悲伤.
我一直在寻找答案,但没有找到答案.我有一个虚拟的环境目录,一个带有req.txt的项目目录.当我运行pip -r req.txt时,它会安装一些来自github(源代码)的应用程序和一些来自pypi的应用程序.来自pypi的那些在虚拟evn上可重新定位的调用之后很好,但是从github安装的应用程序的站点包中的链接仍然指向旧的目录位置.
其他人都看过这种行为?有什么快速的方法吗?此外,relocatable不支持最初在virtualenv上使用的--no-site-packages标志.移动虚拟并重新激活后,系统的站点包中都可以看到所有内容.Docs表明这种行为是一个事实,所以我想知道是否有任何快速解决方法?
所以,我有一个Python程序,有一些荒谬的插件/包.我希望能够在其virtualenv中分发程序,以便捆绑包.但是,该程序适用于Windows,并且在Windows上不支持virtualenvs的"可重定位"功能(以及仍在进行实验).
所以,我正在寻找编写脚本,或者只是编写指令来手动更改绝对路径名以重新定位virtualenv.
我的问题是,如果有人知道我必须在virtualenv中寻找绝对路径名称.我是Python包装的新手.activate.bat脚本包含绝对路径名,但是单个包是否将绝对路径名硬编码到其安装中?
Make Environments Relocatable一节描述了为什么不能简单地移动virtualenv,而是列出包含绝对路径名的地方.
从python 3.3开始,stdlib具有用于创建虚拟环境的venv模块.python 3.x venv环境是否可重定位?
我用以下方法创建了一个虚拟环境:
$ virtualenv my_ven_test
Run Code Online (Sandbox Code Playgroud)
然后让我们用以下方式激活环境:
$ source my_ven_test/bin/activate
Run Code Online (Sandbox Code Playgroud)
现在让我们安装一个包:
(my_ven_test) $ pip install mysql-connector==2.1.3
Run Code Online (Sandbox Code Playgroud)
最后一行不生效.事实上,如果我检查:
(my_ven_test) $ pip freeze
Run Code Online (Sandbox Code Playgroud)
我看到没有安装包(以及该my_ven_test/lib/python/site-package目录不包含mysql-connector包)
你可以指导我解决这个问题吗?
一些说明:
我有一个相对较大的项目,有很多依赖项,我想分发这个项目,但是安装这些依赖项有点痛苦,并且需要很长时间(pip install 需要相当长的时间)。所以我想知道是否可以将整个 virtualenv 迁移到另一台机器并让它运行。
我尝试复制整个 virtualenv,但是每当我尝试运行某些东西时,这个 virtualenv 仍然使用我的旧机器的路径。例如当我跑步时
source activate
pserve development.ini
Run Code Online (Sandbox Code Playgroud)
我明白了
bash: ../bin/pserve: /home/sshum/backend/bin/python: bad interpreter: No such file or directory
Run Code Online (Sandbox Code Playgroud)
这是我的旧目录。那么有没有办法让 virtualenv 用新路径重新配置这个路径呢?
我sed -i 's/sshum/dev1/g' *在 bin 目录中尝试了一下,它解决了这个问题。然而,我现在遇到了一个不同的问题,我的猜测是这个 sed 改变了一些东西。
我已确认我已libssl-dev安装,但当我运行时,python我得到:
E: Unable to locate package libssl.so.1.0.0
E: Couldn't find any package by regex 'libssl.so.1.0.0'
Run Code Online (Sandbox Code Playgroud)
但当我跑步时aptitude search libssl我看到:
i A libssl-dev - SSL development libraries, header files and documentation
Run Code Online (Sandbox Code Playgroud)
我也尝试过virtualenv --relocatable backend但没有去。
python ×7
virtualenv ×7
python-3.x ×2
distutils ×1
oop ×1
pip ×1
project ×1
python-venv ×1
windows ×1