【问题标题】:Python packages path issuesPython包路径问题
【发布时间】:2026-01-04 11:45:01
【问题描述】:

使用 Python 2.7,操作系统:Ubuntu 16.04 64 位。

我正在使用 Python C API 编写一个示例应用程序。我已经创建了一个虚拟环境并在 virtualenv 中安装了依赖包来运行这个应用程序。下面是我的代码。

#include <iostream>
#include <Python.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char* argv[]){    
  Py_OptimizeFlag=1;
  //Py_SetPythonHome((char *)"/home/user/workspace/venv_2_7/bin/python");
  Py_SetProgramName((char *)"python_test");
  Py_Initialize();

  PySys_SetPath((char *)"/home/user/workspace/venv_2_7/lib;/home/user/workspace/venv_2_7/lib/python2.7/site-packages;");

  PySys_SetArgv(argc, argv);

  PyObject* PyFileObject = PyFile_FromString((char *)"/home/user/Projects/python_test/test.py", (char *)"r");
  int ret = PyRun_SimpleFileEx(PyFile_AsFile(PyFileObject), (char *)"/home/user/Projects/python_test/test.py", 1);

  if (ret != 0) {
    printf ("Failed to launch the application.\n");
    return 0;
  }

  Py_Finalize();
  return 0;
}

当我运行这个文件时,我收到了这个错误:

Traceback (most recent call last):
  File "/home/user/Projects/python_test/test.py", line 23, in <module>
    ....
  File "/home/user/Projects/python_test/sample/__init__.py", line 12,     in <module>
    import logging
ImportError: No module named logging

该消息清楚地表明,当我们运行应用程序时,未找到应用程序所需的系统和其他包。即使我设置了路径,也没有找到。

  • 如何告诉应用程序在哪里可以找到所有必需的系统和其他包?
  • 如何通过API设置才不会报错?

【问题讨论】:

    标签: python python-2.7 python-3.x python-c-api


    【解决方案1】:

    我认为路径中的第一项应该包括 python2.7 文件夹,因为那将是标准库文件所在的位置,而不是 lib。

    /home/user/workspace/venv_2_7/lib/python2.7

    但您应该仔细检查它们是否存在。如果您的 virtualenv 工具较旧,那么它可能在该区域具有不同的默认行为。

    【讨论】: