如何以可用于调用 python 脚本但不需要系统范围的 python 的方式设置虚拟环境。
我的目标是拥有一个包含 python 脚本的文件夹,在该文件夹中包含 python 本身以及该 python 脚本所需的所有库。
我试过使用 pycharm 来管理我的 venv,但是 venv py charm 创建需要一个系统范围的 python 才能让 venv python 工作。 (我很确定这是因为 pyvenv.cfg 文件需要引用系统范围的 python)。
我不想要的是将它编译成可执行文件。
在这种情况下,要走的路不是通过虚拟环境。 我必须在我工作的公司做这件事——因为有些电脑没有互联网。
env
吧。
$ mkdir -p /path/to/env
pip install
中添加:
-t /path/to/env
(目标目录为t
)
所以:
pip install -t /path/to/env packagename
env
文件夹传输到您的离线计算机(通过 USB 或其他方式)/path/to/env
添加到您的PYTHONPATH
环境变量
在 Linux 或 mac 中将 ~/.bashrc
添加到其内容中:
export PYTHONPATH=/path/to/env:$PYTHONPATH
在 Windows 中,添加到您的:$profile.CurrentUserAllHosts
:
$env:PYTHONPATH=C:/path/to/env;${$env:PYTHONPATH}
(使用 ;
作为分隔符!)
PYTHONPATH
确定您的 Python 在哪里寻找包。
顺序很重要 - 从左到右搜索它。source ~/.bashrc
在 Linux 中
. $profile.CurrentUserAllHosts
在 Windows 中
使输入的更改被执行,从而有效。瞧,现在您的 Python 将能够在您的文件夹中找到包!
系统范围或非系统范围的python
我不知道——我自己没试过。
你可以通过给 python.exe (windows) 或 python 二进制文件 (linux/mac=unix-derived) 的绝对路径。
在 unix 派生系统中,你可以这样做:
env PYTHONPATH=/path/to/env /path/to/python /path/to/script.py
使 PYTHONPATH 只对这个调用有效。
在 Windows 中,你可以使用一个函数来做到这一点,例如在 PowerShell
中myscript () {
local PATH=/path/to/python;$env:PYTHON
local PYTHONPATH=/path/to/env
python /path/to/script.py
}
myscript
然后,在函数外,变量保持不变。
答案很简单,虚拟环境不适合这种情况。便携式/嵌入式 Python 是正确的选择。此处的视频https://www.youtube.com/watch?v=z8kgu74jERM