[英]python run ImportError:No module named
這是我的項目結構。 我在項目中使用virtualenv,但在運行它時出現ImportError.I問題。使用Mac 。
但是我可以使用Pycharm成功運行它
那么如何在Terminal上成功運行它呢,因為我想在帶有cron的Ubuntu服務器上運行它
謝謝您的回答。在這里,我展示了解決方案。我修改了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路徑的方法,但我建議您遵循以下方法:
setup.py
您需要指定packages
和install_requires
。 pip install -e /path/to/your-package
>在development
模式下本地安裝您的應用程序,它將在python virtualenv中創建一個雞蛋鏈接,您可以從現在開始在本地終端中運行您的應用程序; pip install
或easy_install
構件。 您也可以根據需要將軟件包發布到PyPi 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.