如何设置一个虚拟环境,使其可以用来调用python脚本,而不需要系统范围的python。
我的目标是有一个包含python脚本的文件夹,python本身在该文件夹中,以及该python脚本所需的所有库。
我已经尝试使用pycharm来管理我的venv,但是venv pycharm创建需要一个系统范围的python才能使venv python工作。(我很确定这是因为pyvenv.cfg文件需要引用系统范围的python)。
在一天结束的时候,我不在乎我是否用pycharm或其他工具创建venv,我只想让它工作。有什么建议吗?
我不想把它编译成可执行文件。
在这种情况下,方法不是通过虚拟环境。我必须在我工作的公司里这样做——因为有些电脑没有网络。
- 在你联网的电脑上创建一个目录,您将在其中安装所有软件包。我们叫它
env
。$ mkdir -p /path/to/env
- 安装所需包时,只需添加到
pip install
:-t /path/to/env
(t
为目标目录)所以:pip install -t /path/to/env packagename
- 将
env
文件夹传输到离线计算机(通过usb或其他) 将 source ~/.bashrc
. $profile.CurrentUserAllHosts
在Windows中,使输入的更改被执行,因此有效。
/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在哪里查找包。顺序很重要——从左到右进行搜索。Linux中的瞧,现在您的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