【Python】pycharm开发得项目,使用命令行来运行 您所在的位置:网站首页 pycharm项目目录 【Python】pycharm开发得项目,使用命令行来运行

【Python】pycharm开发得项目,使用命令行来运行

2023-08-25 12:58| 来源: 网络整理| 查看: 265

云海一片,寻梦一天... 背景

我们平常使用python IDE(pycharm、eclipse、sublime等)开发堆积成得项目,可能有很多package和module,并且各自之间有一定得引用,在IDE里可能一个右键就能run起来,但是初始项目放到服务器上后,使用命令行执行就没那么容易了。项目结构如下:

这是写了一个小工具,用pycharm使着挺好得,但是想调到命令行执行test_interface.py时候,总是报错“No module named”

Traceback (most recent call last): File "test_interface.py", line 20, in from com.framework.utils.reporterUtil.LoggingPorter import LoggingPorter ImportError: No module named com.framework.utils.reporterUtil.LoggingPorter 解决 1.使用sys.path.append()方法

直接在test_interface.py得开头把这个脚本执行得路径加载到python交互环境变量里

#!usr/bin/env python # -*- coding:utf-8 -*- """ @author: jayzhen @software: PyCharm & Python 2.7 @file: test_interface.py """ import sys import os print sys.path # 当前项目路径加入到环境变量中,让解析器能找到第一model的目录 sys.path.append(os.path.abspath(os.path.join(os.getcwd(), "./src"))) # A import requests from com.framework.utils.reporterUtil.LoggingPorter import LoggingPorter # B

看好我A处得path是加载到了B处from路径得上一级src目录,看上面得截图,就知道这个src下没有__init__.py,他不是一个package,且src被标记位source root目录,在pycharm里好用,但是命令行不行,我们需要帮test_interface找到“com.framework.utils.reporterUtil.LoggingPorter”包路径,而第一级com就在src下面,所以我们想python解析器提供路径得时候一定要到这一级。其实如果脚本直接在当前src目录下执行,不添加上面得sys.path.append没有问题

如果加上sys.path.append

也就是说python直接执行得时候会把当前目录直接塞给python解析器,不管是否添加sys.path.append,这个方法有缺陷,就是同一个运行环境下,如果有太多执行得脚本,会往sys.path里塞太多路径,导致检索路径太多,降低性能。

建议:如果我们得脚本是固定位置得,可以使用上面得方式直接在脚本的当前目录执行,或使用sys.path给定目录执行

2.python -m

使用python -m的方式执行脚本,就没有向sys.path添加当前工作路径了

(记住python -m是在import第一层package的上一层目录下执行的:本次实验就是src目录下)

总结:

1.推荐使用python -m的方式去找到我们要执行的脚本的module(脚本里要有程序执行的入口__main__)

2.如果我们在部署的时候想在指定目录下执行(当然还是在项目目录下),变动脚本位子,记得保证脚本所在目录下有或包含你脚本里要import的包路径或模块名

(就是test_interface移到在python-owl目录下,python-owl/src下没有__init__.py,python-owl/src/com目录才有,如果想在python-owl下使用python -m test_interface,就必须保证src也是package,在他目录下添加一个__init__.py文件,且test_interface的import改成“from src.com.framework.utils.reporterUtil.LoggingPorter”)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有