创建一个python venv,在没有安装python的系统上运行



如何设置一个虚拟环境,使其可以用来调用python脚本,而不需要系统范围的python。

我的目标是有一个包含python脚本的文件夹,python本身在该文件夹中,以及该python脚本所需的所有库。

我已经尝试使用pycharm来管理我的venv,但是venv pycharm创建需要一个系统范围的python才能使venv python工作。(我很确定这是因为pyvenv.cfg文件需要引用系统范围的python)。

在一天结束的时候,我不在乎我是否用pycharm或其他工具创建venv,我只想让它工作。有什么建议吗?

我不想把它编译成可执行文件。

在这种情况下,方法不是通过虚拟环境。我必须在我工作的公司里这样做——因为有些电脑没有网络。

  1. 在你联网的电脑上创建一个目录,您将在其中安装所有软件包。我们叫它env$ mkdir -p /path/to/env
  2. 安装所需包时,只需添加到pip install:-t /path/to/env(t为目标目录)所以:pip install -t /path/to/env packagename
  3. env文件夹传输到离线计算机(通过usb或其他)
  4. /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中的
  5. source ~/.bashrc. $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

相关内容

  • 没有找到相关文章

最新更新