python - 获取嵌入式 Python 运行时以使用当前事件的 virtualenv

标签 python virtualenv

我大量使用 virtualenv 将我的开发环境与系统范围的 Python 安装隔离开来。使用 virtualenv 的典型工作流程包括运行

source /path/to/virtualenv/bin/activate
设置 Python 执行隔离运行时所需的环境变量。确保我的 Python 可执行文件使用当前事件的 virtualenv 就像将 shebang 设置为
#!/usr/bin/env python
一样简单

不过,最近我一直在编写一些嵌入 Python 运行时的 C 代码。我似乎无法弄清楚的是如何让嵌入式运行时使用当前事件的 virtualenv。有人有一个很好的例子可以分享吗?

最佳答案

检查路径和设置 Py_SetProgramName 对我有用:

std::vector<std::string> paths;
std::string pathEnv = getenv("PATH");
boost::split(paths, pathEnv, boost::is_any_of(";:"));
for (std::string path : paths)
{
  boost::filesystem::path pythonPath = boost::filesystem::path(path) / "python";
  std::cout << pythonPath << std::endl;
  if (boost::filesystem::exists(pythonPath))
  {
    pythonProgramName_ = pythonPath.string(); // remember path, because Py_SetProgramName doesn't save it anywhere
    Py_SetProgramName(&pythonProgramName_[0]);
    break;
  }
}
Py_Initialize();

关于python - 获取嵌入式 Python 运行时以使用当前事件的 virtualenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7492855/

相关文章:

python - PyMySQL 不插入数据

python - 如何在python中并行执行多个bash命令

python - 虚拟环境返回 "No such file or directory"

python virtualenv和flask安装。没有名为flask的模块

linux - 如何使 venv 完全可移植?

python - 如何在模板中获取 ModelChoiceField 实例

python - Python 中不带 goto 的紧急退出

python - 如何从无线设备向树莓派无线发送命令并读取它们?

eclipse - 使用 PyDev 和 Virtualenv 设置 Eclipse Juno

python - 如何在 PyCharm 终端中激活 virtualenv?