Python打包路径问题

时间:2017-03-31 13:52:02

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

使用Python 2.7,OS: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以便我们不会收到错误?

1 个答案:

答案 0 :(得分:0)

我认为你路径中的第一项应该包含python2.7文件夹,因为它应该是标准库文件的位置,而不是lib。

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

但你应该仔细检查他们在那里。如果你的virtualenv工具较旧,那么它在这个区域可能有不同的默认行为。