Python在脚本中导入文件的问题(不在控制台中)

马可·昂尼斯(Marco Onnis)

我知道我要问的问题有成千上万的问题和答案,但是我需要为我的特殊问题做一个解释,因为这是我第一次使用别人编写的代码,而我对导入确实感到困惑。所以:我使用Pycharm,我直接从gitLab存储库中提取了所有代码(按目录组织)。

这是结构:

C:\users\marco\PycharmProjects\Avv
└──ads-ai
     └──src
         └──dataElab
             └──dataprep.py
             └──datamod.py
         ├──doc2vec
         ├──logger
              └──log_setup.py
         ├──res
         ├──mod1.py
         ├──mod2.py
         ├──mod3.py
         └──rest
              └──api.py

我的起始脚本是api.py,我需要在其中导入mod1.py-

但是开始写

import mod1

给我一个错误。

问题还在于,在mod1上,还有其他导入:

from logger import log_setup
from dataElab import dataprep, datamod

所有导入都会给我错误'NoModuleFound'。我试过:-使用sys.path.append添加路径-相对路径(来自.. import mod1),但给我ValueError:尝试了超出顶级包的实际导入-绝对路径

但什么都没有,对于mod1或log_setup,我始终会出现“无模块”错误。

我想使用Pycharm的脚本,而不是Python控制台。如果我使用os.getwd()检查-> C:\ users \ marco \ PycharmProjects \ Avv \ ads-ai \ src \ rest(应该正确)。

并使用sys.path --->

['C:\ Users \ marco.onnis \ PycharmProjects \ Avvocatura2020 \ ads-ai \ src \ restAPI','C:\ Users \ marco.onnis \ PycharmProjects \ Avvocatura2020','C:\ Users \ marco.onnis \ AppData \ Local \ Continuum \ anaconda3 \ envs \ Avvocatura2020 \ python36.zip','C:\ Users \ marco.onnis \ AppData \ Local \ Continuum \ anaconda3 \ envs \ Avvocatura2020 \ DLL','C:\ Users \ marco.onnis \ AppData \ Local \ Continuum \ anaconda3 \ envs \ Avvocatura2020 \ lib','C:\ Users \ marco.onnis \ AppData \ Local \ Continuum \ anaconda3 \ envs \ Avvocatura2020','C:\ Users \ marco.onnis \ AppData \ Local \ Continuum \ anaconda3 \ envs \ Avvocatura2020 \ lib \ site-packages','C:\ Users \ marco.onnis \ AppData \ Local \ Continuum \ anaconda3 \ envs \ Avvocatura2020 \ lib \ site-packages \ xlsxwriter-1.2。 8-py3.6.egg']

如果再次提出此类问题,我感到非常抱歉,但是我在理解namemain和所有stuf的概念时遇到了问题,我不知道该怎么办(我希望那时候大致了解主题)

非常感谢!

米希

我想简化此过程并帮助您理解的第一件事是在根目录中有一个main.py。

C:\users\marco\PycharmProjects\Avv
└──ads-ai
 └──main.py  # main script to run your code
 └──src
     └──dataElab
         └──dataprep.py
         └──datamod.py
     ├──doc2vec
     ├──logger
          └──log_setup.py
     ├──res
     ├──mod1.py
     ├──mod2.py
     ├──mod3.py
     └──rest
          └──api.py

有两种方法可以在这里导入,即使用__init__.py文件还是相对导入。相对导入的示例如下所示,其中您引用目录(或使用点表示法的子目录)

main.py

from src import mod1  # imports mod1.py from '/src' folder
from src.rest import api  # imports api.py from '/src/rest' folder

解决该问题的第二种方法from x import y__init__.py在每个目录中放置一个空文件

C:\users\marco\PycharmProjects\Avv
└──ads-ai
 └──main.py
 └──src
     └──__init__.py
     └──dataElab
         └──__init__.py
         └──dataprep.py
         └──datamod.py
     ├──doc2vec
     ├──logger
          └──__init__.py
          └──log_setup.py
     ├──res
     ├──mod1.py
     ├──mod2.py
     ├──mod3.py
     └──rest
          └──__init__.py
          └──api.py

然后可以像这样导入

main.py

import mod1  # imports mod1.py
import api # imports api.py

因此,您可以拥有以下内容

main.py

import api

api.py

import mod1

从不同位置导入时,您应该有所不同,因为如果模块共享相同的文件名(只是在不同目录中),则可能会导致模块名称冲突。在这种情况下,您还应该添加as交易模块名称

例如

main.py

from src import mod1 as mod_one
from src.rest import mod1 as mod_1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

即使可以在Python控制台中导入nltk,也无法在Jupyter中导入

来自分类Dev

如何在PyCharm控制台中导入自己的模块

来自分类Dev

导入在控制台中工作,但不在pyCharm中

来自分类Dev

导入在控制台中工作,但不在pyCharm中

来自分类Dev

如何在 ROS 工作台中的简单 python 脚本中导入 Webots 控制器库

来自分类Dev

xmlhttprequests 在控制台中工作,但不在脚本中

来自分类Dev

python脚本中导入psutil的问题

来自分类Dev

无法在 Scala 控制台中导入 jar 以运行 Spark 程序

来自分类Dev

Firefox控制台中的Selenium Python执行脚本

来自分类Dev

JQuery:脚本在控制台中工作,但不在附件中工作

来自分类Dev

JQuery:脚本在控制台中工作,但不在附件中工作

来自分类Dev

jQuery在控制台中工作,但不在Rails 4 application.js文件中

来自分类Dev

在python控制台中导航到单词/行的开头/结尾

来自分类Dev

在 R 控制台中执行脚本

来自分类Dev

Peewee 在 python 控制台中检索数据但不在应用程序中

来自分类Dev

cheerio选择器(Node.js)在控制台中运行,但不在我的脚本中运行

来自分类Dev

在控制台中找不到JS文件

来自分类Dev

在控制台中打印/ etc / shadow文件

来自分类Dev

设置脚本中发生错误时出现在控制台中的文件名

来自分类Dev

将整个脚本输出重定向到文件并同时在控制台中显示

来自分类Dev

在python终端中导入脚本

来自分类Dev

Enter不在断点处在控制台中提交命令

来自分类Dev

我如何设法使stderr消息不在控制台中打印?

来自分类Dev

在控制台中打印,但不在页面上打印?

来自分类Dev

我如何设法使stderr消息不在控制台中打印?

来自分类Dev

如何在python 3控制台中打印出导入库的成员函数?

来自分类Dev

如何在python 3控制台中打印出导入库的成员函数?

来自分类Dev

如何在Spyder控制台中使用变量执行Python 3.3脚本?

来自分类Dev

如何在Jenkins奴隶的脚本控制台中使用groovy运行python命令?

Related 相关文章

  1. 1

    即使可以在Python控制台中导入nltk,也无法在Jupyter中导入

  2. 2

    如何在PyCharm控制台中导入自己的模块

  3. 3

    导入在控制台中工作,但不在pyCharm中

  4. 4

    导入在控制台中工作,但不在pyCharm中

  5. 5

    如何在 ROS 工作台中的简单 python 脚本中导入 Webots 控制器库

  6. 6

    xmlhttprequests 在控制台中工作,但不在脚本中

  7. 7

    python脚本中导入psutil的问题

  8. 8

    无法在 Scala 控制台中导入 jar 以运行 Spark 程序

  9. 9

    Firefox控制台中的Selenium Python执行脚本

  10. 10

    JQuery:脚本在控制台中工作,但不在附件中工作

  11. 11

    JQuery:脚本在控制台中工作,但不在附件中工作

  12. 12

    jQuery在控制台中工作,但不在Rails 4 application.js文件中

  13. 13

    在python控制台中导航到单词/行的开头/结尾

  14. 14

    在 R 控制台中执行脚本

  15. 15

    Peewee 在 python 控制台中检索数据但不在应用程序中

  16. 16

    cheerio选择器(Node.js)在控制台中运行,但不在我的脚本中运行

  17. 17

    在控制台中找不到JS文件

  18. 18

    在控制台中打印/ etc / shadow文件

  19. 19

    设置脚本中发生错误时出现在控制台中的文件名

  20. 20

    将整个脚本输出重定向到文件并同时在控制台中显示

  21. 21

    在python终端中导入脚本

  22. 22

    Enter不在断点处在控制台中提交命令

  23. 23

    我如何设法使stderr消息不在控制台中打印?

  24. 24

    在控制台中打印,但不在页面上打印?

  25. 25

    我如何设法使stderr消息不在控制台中打印?

  26. 26

    如何在python 3控制台中打印出导入库的成员函数?

  27. 27

    如何在python 3控制台中打印出导入库的成员函数?

  28. 28

    如何在Spyder控制台中使用变量执行Python 3.3脚本?

  29. 29

    如何在Jenkins奴隶的脚本控制台中使用groovy运行python命令?

热门标签

归档