2017-03-31 125 views
1

使用Python 2.7,操作系統:Ubuntu 16.04 64位。Python包路徑問題

我正在使用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設置,以便我們沒有得到錯誤?

回答

0

我認爲你的路徑中的第一項應該包括python2.7文件夾,因爲這將是標準庫文件應該在的位置,而不是在lib中。

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

但你應該仔細檢查他們的存在。如果你的virtualenv工具比較老,那麼它在這個區域可能有不同的默認行爲。