首页 > 系统相关 >项目代码在pycharm中可以正常运行,但是linux运行报错No module named 'XX'

项目代码在pycharm中可以正常运行,但是linux运行报错No module named 'XX'

时间:2022-09-19 19:12:58浏览次数:87  
标签:__ file2 named No py file1 报错 import path

问题产生的原因:pycharm自动将代码的主函数路径加入到运行中去,但是linux不会。

解决问题的本质:为项目中文件找到更目录并添加到sys路径中。

项目实例

 

 

 

原始的项目文件中, 所有的文件都没有__init__.py文件。

1.  实验1: file0调用file1,file2实现

file0.py 

from src.dir1 import file1
from src.dir2 import file2

def fun0():
    return "fun0 is the root path, test_dir_level"

if __name__ == '__main__':
    print(file1.fun1())
    print(file2.fun2())

file1.py

def fun1():
    return "file1 is in the dir1"

file2.py  

def fun1():
    return "file1 is in the dir1"

进入file0所在目录, 运行文件得到:

 

 

 结果分析: 此时,运行正常,file0文件能够调用file1和file2中的方法。

2. 实验2:file1调用file2中方法(file2调用file1也一样)

file1.py中内容为:

from src.dir2 import file2
print(file2.fun2())

file2.py 内容与实验1中给出的相同。

此时,linux进入file1所在的文件运行file.py,结果如下:

 

 

 但是在pycharm中可以正常运行,结果为:

 

 

 

3. 解决办法

 

解决实验2中的问题(file1调用file2失败的问题)

方式1:在file1的文件中,添加下面的内容,将更目录添加到sys.path中,此时,file1.py内容如下:

import sys
import os
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
add_path = os.path.split(rootPath)[0]
sys.path.append(os.path.split(rootPath)[0])

from src.dir2 import file2
print(file2.fun2())

进入file1所在的路径,运行python file1.py,也可以正常调用到file2.

 

方式2: 在file1.py所处的文件夹下添加__init__.py文件,内容如下:

import sys
import os
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(os.path.split(rootPath)[0])

file1.py中添加

from __init__ import *

file1.py 代码为:

from __init__ import *
from src.dir2 import file2
print(file2.fun2())

此时,运行 python file.py

 

 注: 一定要在file1.py中添加from __init__ import *,否则依然会报错No module named src

标签:__,file2,named,No,py,file1,报错,import,path
From: https://www.cnblogs.com/mo-lu/p/16708714.html

相关文章

  • FinOps能力成熟度模型启动,灵雀云助力云原生降本增效标准制定
    9月16日,在2022中国数据中心市场年会“降本增效分论坛”上,《云原生FinOps能力成熟度模型》标准正式启动,作为FinOps产业标准工作组首批发起成员和云原生技术领域的唯一代表企......
  • NORFLASH 笔记
    目录引脚定义SPI时序StandardSPI(全双工模式)DualSPI(半双工模式)QuadSPI(半双工模式)引脚定义SPI时序SCLK上升沿时数据被钳住,数据切换在SCLK下降沿CS低电平选中Sta......
  • BigDecimal除法报错Method threw ‘java.lang.ArithmeticException‘ exception.
    今天使用BigDecimal数据类型做除法的时候,遇到以下报错:Methodthrew‘java.lang.ArithmeticException’exception.Non-terminatingdecimalexpansion;noexactreprese......
  • about_Execution_Policies 报错解决方案
    在vscode中执行npm命令时,报错yarn:无法加载文件C:\Users\xx\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅https:/go.microsoft.c......
  • mysql5.7+版本,date类型设置默认值0000-00-00 报错
    在本地建表,发现无法给date类型设置默认值为0000-00-00,报错:  在mysql命令行输入:SELECT@@SQL_MODE,可以看到值为:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZER......
  • 2022-09-19 Error: Cannot find module '项目\node_modules\@vue\cli-service\bin
    前言:wepy项目迁移uniapp使用wepy-to-uniapp转换代码后初始化依赖抛出的错误:Error:Cannotfindmodule'项目\node_modules\@vue\cli-service\bin\vue-cli-service.js'网......
  • Vin-Mono论文阅读笔记(一)
    VINS-Mono概述VINS-MonoVINS-Mono是由一个单目相机和一个低成本IMU组成的鲁棒通用的单目视觉惯性系统。通过融合预积分的IMU测量值和特征观测值来获得高精度的视觉惯性......
  • mysql报错 a foreign key constraint fails(外键约束错误)
    报错信息如下:(pymysql.err.IntegrityError)(1452,u'Cannotaddorupdateachildrow:aforeignkeyconstraintfails解决办法:SETFOREIGN_KEY_CHECKS=0;#临时......
  • NOI与NOIP的区别
    NOI:全国青少年信息学奥林匹克(NOI)是国内包括港澳在内的省级代表队最高水平的大赛,自1984年至今,在国内包括香港、澳门组织竞赛活动。每年经各省选拔产生5名选手(其中一名是女选......
  • WinOS下的电源计划设置
    在WindowsOS下电源高级选项中的电源管理计划是按照如下几组GUID来进行分类设置的:PowerActiveSchemeGUIDSubGroupGUIDPowerSettingItemGUID在程序中需要获......