使用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
该消息清楚地表明,当我们运行应用程序时,找不到应用程序所需的系统和其他软件包。即使我设置了路径,也找不到它。
答案 0 :(得分:0)
我认为你路径中的第一项应该包含python2.7文件夹,因为它应该是标准库文件的位置,而不是lib。
/home/user/workspace/venv_2_7/lib/python2.7
但你应该仔细检查他们在那里。如果你的virtualenv工具较旧,那么它在这个区域可能有不同的默认行为。