Nat*_*ese 57 python virtualenv python-3.x virtualenv-commands
这个问题不重复.
它不仅适用于重命名虚拟环境,还适用于将其实际移动到其他目录,包括可能包含的其他用户目录.
这与仅重命名虚拟环境不同,特别是对于不熟悉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没有悲伤的情况下这样做吗?我确实想避免悲伤.
hil*_*rge 58
是.可以在同一平台上移动它.您可以--relocatable在现有环境中使用.
来自--help:
--reocatable - 使一个现有的virtualenv环境可重定位.这会修复脚本并使所有.pth文件相对.
然而,这似乎并没有改变activate剧本,而只是改变pip*和easy_install*脚本.在activate脚本中, $VIRTUAL_ENV环境变量硬编码为原始/path/to/original/venv.该$VIRTUAL_ENV变量用于设置PATH你的活动环境中也是如此,所以它必须根据新的位置被改变,以调用python并pip没有绝对路径等.
要解决此问题,您可以更改脚本中的$VIRTUAL_ENV环境变量activate(例如使用sed),一切都应该很好.
用法示例:
$ cd ~/first
$ virtualenv my-venv
$ grep 'VIRTUAL_ENV=' my-venv/bin/activate
VIRTUAL_ENV="/home/username/first/my-venv"
$ virtualenv --relocatable my-venv
Making script my-venv/bin/easy_install relative
Making script my-venv/bin/easy_install-2.7 relative
Making script my-venv/bin/pip relative
Making script my-venv/bin/pip2 relative
Making script my-venv/bin/pip2.7 relative
### Note that `activate` has not been touched
$ mkdir ~/second
$ mv my-venv ~/second
$ cd ~/second
$ grep 'VIRTUAL_ENV=' my-venv/bin/activate
VIRTUAL_ENV=/home/username/first/my-venv
### (This variable hasn't been changed, it still refers to the old, now non-existent directory!)
$ sed -i -e 's|username/first|username/second|' my-venv/bin/activate
## sed can be used to change the path.
## Note that the `-i` (in place) flag won't work on all machines.
$ source my-venv/bin/activate
(my-venv) $ pip install foass
...
(my-venv) $ python
[...]
> import foass
Run Code Online (Sandbox Code Playgroud)
万岁,现在您可以安装并将其加载到新定位的虚拟环境中.
Lig*_*tCC 37
venv内置模块)从 Python v3.3 开始,virtualenv已经成为一个名为venv.
--relocatable其他答案中提到的选项未包含在 中venv,目前我知道没有好的、安全的方法来重命名或重新定位 Python 虚拟环境。
但是,有一种相当简单的方法可以简单地重新创建一个虚拟环境,包括所有当前安装的包。请参阅此答案,或参阅以下部分以了解有关重新创建虚拟环境的信息。在此过程中,您可以在任何位置以您想要的任何名称重新创建新环境。或查看以下部分了解该过程。
在那个答案中,他确实提到了其他一些可能支持直接重命名或移动的 3rd 方软件包。如果您决定寻求一种完整地移动虚拟环境的方法,您可以研究这些方法是否也venv适用。
注意:在那个答案中,它侧重于virtualenv,而不是venv。有关如何翻译,请参见下文。
venv与较旧的virtualenv命令语法要使用的命令venv是:
python -m venv
Run Code Online (Sandbox Code Playgroud)
而不仅仅是virtualenv,它作为命令安装在原始包中。其中“python”是指您运行 python 可执行文件的方式,这可能是多种情况,例如:
pythonpy或py -3.7或类似的(目前仅适用于 Python 3.3+ 和 Windows的Python Launcher for Windows)python3 (双重安装python 2和3的linux环境的约定)c:\program files\python37\python.exe如果您不确定正在运行哪个版本,您可以随时python --version了解。
创建/重新创建虚拟环境很容易,在您使用它们一段时间后应该成为您的第二天性。这个过程反映了你在前半部分将脚本作为一个包(带有它的依赖项)分发时会做什么,然后有人会做什么来安装你的脚本/包以进行进一步的开发。
首先,获取虚拟环境中内容的更新列表。激活它后,获取它使用的 Python 版本并将依赖项列表保存到文件中。
python --version与激活的虚拟环境一起使用以查看它使用的 Python 版本。
使用python -m pip freeze > requirements.txt创建当前软件包的依赖关系的列表,并把它们放进requirements.txt文件。这个命令肯定适用于 Linux 或 Git Bash - 不是 100% 确定 Windows 中的 Powershell 或命令行。
现在创建一个新的虚拟环境,然后添加旧环境的依赖项。
制作您的新 venv。
python用作命令python.exe在虚拟环境文件夹中使用绝对路径python -m venv my_new_venv在新my_new_venv文件夹的当前工作目录中创建新的虚拟环境。从requirements.txt文件安装您的依赖项。
python -m pip install -r requirements.txt您可能需要重新安装处于开发模式的本地包。
请注意,如果您需要查看安装包的特定位置,请使用:
python -m pip list -v-v或“详细”选项将增加大约每个安装的软件包,包括它安装在路径一些额外的信息,这是非常有用的,以确保你保持虚拟,用户和系统安装的软件包直。此时您可以删除旧的 venv 文件夹和所有内容。我建议为此使用 GUI - 从 linux 命令行删除文件通常是永久性的,一个小的错字可能是个坏消息。
是的你可以!(在windows)
解决方法很简单,只需将虚拟环境移动到任何位置,然后activate.bat在内部进行编辑即可scripts\:
移动到虚拟环境到想要的目录
右键单击并编辑activate.bat位于venv_folder\scripts.
更改VIRTUAL_ENV变量:
set VIRTUAL_ENV=C:\old_directory\venv_name
Run Code Online (Sandbox Code Playgroud)
进入
set VIRTUAL_ENV=C:\new_directory\venv_name
Run Code Online (Sandbox Code Playgroud)
保存编辑后的批处理文件,就是这样!
注意:我的解决方案应该可以工作并保存windows users设置新的虚拟环境,我怀疑这是否可以在其他操作系统中工作,因为.bat来自MS-DOS
可惜:
不,你不能简单地mv。有解决方法,但重新安装可能会更容易。
(my-python-venv)$ /home/me/PeskyPartyPEnvs/pip3 install foaas
zsh: /home/me/PeskyPartyPEnvs/pip3: bad interpreter: /home/me/Env/my-python-venv/bin/python3: no such file or directory
(my-python-venv)$ deactivate
$
Run Code Online (Sandbox Code Playgroud)
... enter沮丧无比,以下工作
$
$
$ pip3 search foaas
Run Code Online (Sandbox Code Playgroud)
除了不是来自my-python-venv,因此而悲伤。
希望mv您virtualenv和使用它,否则未经修改的?
简短答案:
好吧,你不能。