簡體   English   中英

python運行ImportError:沒有命名模塊

[英]python run ImportError:No module named

這是我的項目結構

這是我的項目結構。 我在項目中使用virtualenv,但在運行它時出現ImportError.I問題。使用Mac 在此處輸入圖片說明 在此處輸入圖片說明

但是我可以使用Pycharm成功運行它

在此處輸入圖片說明

那么如何在Terminal上成功運行它呢,因為我想在帶有cronUbuntu服務器上運行它


謝謝您的回答。在這里,我展示了解決方案。我修改了handler.py,我認為它可能與Module Search Path有關 因此,我將項目路徑添加到PYTHONPATH

import os

project_home = os.path.realpath(__file__)
project_home = os.path.split(project_home)[0]
import sys

sys.path.append(os.path.split(project_home)[0])
import shutil
from modules import db, json_parse, config_out
from init_log import init as initlog

initlog()

if __name__ == '__main__':
    try:
        columns = json_parse.json_parse()
        if not columns:
            sys.exit()
        is_table_has_exist = db.check_tables_exist(columns=columns)
        if is_table_has_exist:
            db.check_columns(columns=columns)
        is_ok, config_path = config_out.output(columns)
        if is_ok:
            file_name = os.path.split(config_path)[1]
            shutil.copy(config_path, os.path.join("/app/statics_log/config", file_name))
    except Exception, e:
        print e

我以此來與crontab一起運行。

cd to/my/py_file/path && /project_path/.env/bin/python /path/to/py_file

例:

13 8 1 * * cd bulu-statics/create_config/ && /home/buka/bulu-statics/.env/bin/python /home/buka/bulu-statics/create_config/handler.py >> /app/statics_log/config/create_config.log

PyCharm會自動將標記為包含源的項目目錄添加到PYTHONPATH環境變量中,這就是為什么它可以在pycharm中運行。 在終端上使用

PYTHONPATH=${PWD}/..:${PYTHONPATH} python handler.py

您可以使用顯式相對導入:

from .modules import db, json_parse, config_out

正確的方法是通過添加setup.py文件,然后使用pip install -e .安裝它,將您的項目轉換為合適的Python包pip install -e .

可能是因為PyCharm將您的項目文件夾添加到了PythonPath ,所以您可以在PyCharm中運行您的應用程序。

但是,當您嘗試從命令行運行它時,python解釋器無法在python python中找到這些庫,因此您需要做的是將python virtualenv添加到python python中。

有多種添加python路徑的方法,但我建議您遵循以下方法:

  1. 准備setup.py您需要指定packagesinstall_requires
  2. 通過pip install -e /path/to/your-package >在development模式下本地安裝您的應用程序,它將在python virtualenv中創建一個雞蛋鏈接,您可以從現在開始在本地終端中運行您的應用程序;
  3. 對於打包和發布,您可能想通過遵循https://docs.python.org/2.7/distutils/builtdist.html來構建構件,可以在其他機器上pip installeasy_install構件。 您也可以根據需要將軟件包發布到PyPi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM