转自https://www.cnblogs.com/dreamyu/p/7889959.html

https://www.cnblogs.com/lifeofershisui/p/8135702.html

大家可能知道我们的工程在IDE(Pycharm)中运行和我们在cmd中运行的路径是不一样的,在pycharm中运行时,

会默认pycharm的目录+我们的工程所在目录为运行目录,而在cmd中运行时,会以我们的工程目录所在目录来运行

而在import包时,会首先从pythonPATH的环境变量中来查看包,如果没有你的PYTHONPATH中所包含的目录没有

工程目录的根目录,那么你在导入不是同一个目录下的其他工程中的包时会出现import错误

解决方法:在你运行的文件中将你的工程目录加入到PYTHONPATH中,具体方法如下:

import os,sys

sys.path.append("path")  //path为你的工程根目录的绝对路径

如果此时你运行时依然报错,请先检查是否将根目录加入到了PYTHONPATH中,方法为:

import os

PATH = os.environ

for key in PATH:

  print(key,PATH[key])

其他设置PYTHONPATH方法:

PYTHONPATH是Python搜索路径,默认我们import的模块都会从PYTHONPATH里面寻找。

打印PYTHONPATH:

import os
print sys.path
>['', '/usr/local/lib/python2.7/dist-packages/dlib-19.4.0-py2.7-linux-x86_64.egg', '/home/ershisui',...]

注意:sys.path 也可以用 os.sys.path 替换,两个应该是同一个命令,推荐使用sys.path, 因为 os.sys.path 在python document 中好像没有提及.

设置PYTHONPATH:

  • 方法一:命令窗口添加路径

     export PYTHONPATH=$PYTHONPATH:/home/ershisui

    注意:此方法只在当前命令窗口生效,即如果打开一个新的Terminal 窗口,定位到当前目录, 打印PYTHONPATH 是没有刚才加入的路径的.

  • 方法二:在python 中添加:

      import sys
    sys.path.append('/home/ershisui/')

    实例

  • Tensorflow 的 object detection API 模块中安装教程中

      export PYTHONPATH=$PYTHONPATH:`pwd`:'pwd'/slim

    即添加了python 路径:(pwd 是输出当前目录的命令,这里为什么可以这样,还不懂)添加了两个路径,分别为 /home/.../models-master/research 和  /home/.../models-master/research/slim(可以验证在research 文件夹下有slim 文件)

  • Tensorflow 的 object detection API 模块中object_detection_tutorial.ipynb 中

     sys.path.append("..")

    即在python 中添加了新的搜索目录,即当前目录的上一层(在这里应该是 /home/.../models-master/research)

解决python在命令行中运行时导入包失败,出现错误信息 "ModuleNotFoundError: No module named ***"的更多相关文章

  1. 解决python在cmd运行时导入包失败,出现错误信息 "ModuleNotFoundError: No module named ***"

    1.下图为我的自动化测试工程结构图 我通过运行run.bat批处理文件,调用cmd控制台运行start_run.py来开始我的自动化测试,但是出现如下错误: 大家可能知道我们的工程在IDE(Pycha ...

  2. Oracle安装后命令行中运行sqlplus / as sysdba出现错误ora-01031:insufficient privileges

    Win10安装Oracle后命令行中运行sqlplus as sysdba出现错误ora-01031insufficient privileges的解决方法 情景描述 错误样例 错误分析 解决方法 情 ...

  3. pycharm中可以运行的程序,在命令行中运行提示模块不存在的问题

    运行模块(包含main函数的模块),在模块开头添加以下代码,原因是pycharm运行python脚本时,会自动添加以下代码,将当前库加入到系统库目录集合中,在命令行中运行需要手动添加import os ...

  4. 在命令行中运行eclipse中创建的java项目

    在命令行中运行eclipse中创建的java项目 博客分类: java相关 javaeclipse命令行  由于项目要求,需要对eclipse中的项目进行打包,似的可以在客户机上不装eclipse的情 ...

  5. 命令行中运行Java字节码文件提示找不到或无法加载主类的问题

    测试类在命令行操作,编译通过,运行时,提示 错误: 找不到或无法加载主类 java类 package com.company.schoolExercise; public class test7_3_ ...

  6. Python3 引入sqlite3时出现错误:ModuleNotFoundError: No module named '_sqlite3'

    在Python3 中内置了SQLite3,但是在编译安装完之后执行: import sqlite3 出现错误: ModuleNotFoundError: No module named '_sqlit ...

  7. Python中安装bs4后,pycharm依然报错ModuleNotFoundError: No module named 'bs4'

    学习网络抓取时,第一步出现问题. 执行示例代码 from urllib.request import urlopen from bs4 import BeautifulSoup html = urlo ...

  8. Pycharm中使用from appium import webdriver时报错:ModuleNotFoundError: No module named 'appium'

    此时先检查一下有没有安装Appium-Python-Client,如果没有安装Appium-Python-Client就在控制台输入pip install Appium-Python-Client进行 ...

  9. appium windows 命令行中运行以及targetSdkVersionFromManifest failed的解决

    启动appium服务,可以通过appium.exe可执行文件启动,也可以通过命令行启动.appium.exe启动需要通过安装可执行文件,命令行启动需要通过npm安装appium.可执行文件启动方式如下 ...

随机推荐

  1. 移动端适配flexible.js

    npm install lib-flexible --save npm install px2rem-loader --save-dev

  2. vmware 虚拟机扩展 liunx系统硬盘空间

    参考一下以下博客 https://www.cnblogs.com/yongdaimi/p/9050155.html https://blog.csdn.net/daemon_2017/article/ ...

  3. macOS 在终端中使用 adb命令,每次都要source ~/.bash_profile 才生效

    macOS下已经配置好Android开发环境,环境变量也添加了,但是在终端中使用adb命令每次都需要source .bash_profile之后才能识别, 否则就提示  zsh: command no ...

  4. 页面使用element-tree

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 第五章、Celery分布式系统

    Celery 官方 Celery 官网:http://www.celeryproject.org/ Celery 官方文档英文版:http://docs.celeryproject.org/en/la ...

  6. linux同步onedrive文件

    定时任务 # 开机自启动 @reboot /root/system/start.sh # 从零点开始每小时执行一次任务 0 0 0/1 * * ? nohup rclone sync onedrive ...

  7. Flutter——Wrap组件(流式布局)

    Wrap 可以实现流布局,单行的 Wrap 跟 Row 表现几乎一致,单列的 Wrap 则跟 Row 表现几乎一致.但 Row 与 Column 都是单行单列的,Wrap 则突破了这个限制,mainA ...

  8. Java学习第一天之简单了解java语言及开发环境的安装

    一.初步了解Java语言 Java语言是由Sun公司的James Gosling创造的一门面向对象的高级语言. 2009年4月20日,Sun公司被Oracle以总价值约为74亿美元的价格收购,Java ...

  9. 线程的 run()和 start()有什么区别?(未完成)

    线程的 run()和 start()有什么区别?(未完成)

  10. Python 文件操作(1)

    今天大佬给了个A文件给我,里面存放了机密数据. 什么机密数据??? 有帅哥的联系方式吗? 赶紧打开来看一下 1.open() 函数基本版 Python大佬有个内置开文件的函数open(), 专门开文件 ...