当前位置: 首页 > 知识库问答 >
问题:

Python模块导入是否取决于代码的运行方式?[副本]

穆城
2023-03-14

我不认为任何一种语言在导入其他源文件这样简单的事情上会像python那样让人头疼。所以问题是:我的模块导入是否需要依赖于代码的运行方式?

我有以下目录结构:

./__init__.py
./config.py
./kmer
./kmer/__init__.py
./kmer/__main__.py
./kmer/__pycache__
./kmer/__pycache__/__init__.cpython-36.pyc
./kmer/__pycache__/__main__.cpython-36.pyc
./kmer/__pycache__/bed.cpython-36.pyc
./kmer/__pycache__/config.cpython-36.pyc
./kmer/__pycache__/reference.cpython-36.pyc
./kmer/__pycache__/sets.cpython-36.pyc
./kmer/bed.py
./kmer/config.py
./kmer/reference.py
./kmer/sets.py

我希望从kmer包中的另一个模块导入khmer包中的一个模块。简单?

因此,我在bed.py中添加了以下内容:

import reference
import config
import sets

现在,如果我从kmer目录中运行python bed.py,就可以正常工作了。另外,如果我返回一个目录并调用python kmer/bed.py就可以了。看起来像是python搜索相对于给定文件的导入模块。

我看了很多资料,包括这个问题的答案,尽管它非常详细(实际上是我发现的最好的描述之一),但并不能解决我的问题,也没有提供适当的例子。

更新:我相信这个问题更多地集中在相对导入的一个不同方面,更确切地说,运行代码的不同方法如何影响导入,而不是它被标记为重复的那个。这就是为什么我首先提到另一个问题。因此,我不认为这应该是一个重复。

共有1个答案

阎志义
2023-03-14

最后,不要太注意Python将脚本目录放在sys.path上的“特性”。这除了在不关心名称冲突的玩具问题之外是没有用的,因为任何在sys.path上使用其目录的脚本都必须是一个模块(除非有使其名称不是标识符这样的把戏)。此外,如果您希望库可用于安装在其他地方的脚本,那么它无论如何都需要以其他方式进入sys.path

 类似资料:
  • 主要内容:导入模块方式一:临时添加模块完整路径,导入模块方式二:将模块保存到指定位置,导入模块方式三:设置环境变量很多初学者经常遇到这样的问题,即自定义 Python 模板后,在其它文件中用 import(或 from...import) 语句引入该文件时,Python 解释器同时如下错误: ModuleNotFoundError: No module named '模块名' 意思是 Python 找不到这个模块名,这是什么原因导致的呢?要想解决这个问题,读者要先搞清楚 Python 解释器查找

  • 问题内容: 让被称为FMIF的编码风格。 让被称为IM的编码风格。 让被称为FPIM的编码风格。 为什么IM +FPIM被认为比FMIF更好的编码风格?(有关此问题的启发。) 以下是一些使我更喜欢FMIF而不是IM的条件: 代码的简短性:它使我可以使用较短的函数名称,从而有助于遵循每行80列的约定。 可读性:比更具可读性 。尽管这是一个主观标准,但我认为大多数人都会同意。 易于重定向:如果我使用F

  • 问题内容: 我已尝试找到有关最佳使用还是全面的指南。我刚开始使用Python,并且正在尝试着眼于最佳实践。 基本上,我希望有人能分享他们的经验,其他开发人员有什么喜好,以及避免遇到麻烦的最佳方法是什么? 问题答案: 和之间的区别主要是主观的。选择最喜欢的一个,并在使用中保持一致。这里有一些要点可以帮助你做出决定。 优点: - 减少维护你的import报表。无需添加任何其他导入即可开始使用模块中的另

  • 问题内容: 如何检查我是否在代码中的某个位置导入了模块? 我想检查是否已经导入模块的原因是因为我有一个我不想导入的模块,因为有时会弄乱我的程序。 问题答案: 测试字典中的模块名称: 从文档中: 这是将模块名称映射到已经加载的模块的字典。 请注意,语句有两件事: 如果模块之前从未导入过(=中不存在= ),则将其加载并添加到中。 在当前名称空间中绑定1个或多个引用模块对象或模块名称空间成员的对象的名称

  • 本文向大家介绍Python中几种导入模块的方式总结,包括了Python中几种导入模块的方式总结的使用技巧和注意事项,需要的朋友参考一下 模块内部封装了很多实用的功能,有时在模块外部调用就需要将其导入。常见的方式有如下几种: 1 . import 最常见的方式,直接将要导入的模块名称写在后面导入。 2 .from .. import .. 与import类似,只是更明确的要导入的方法或变量,比如:

  • 本文向大家介绍Python创建模块及模块导入的方法,包括了Python创建模块及模块导入的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python创建模块及模块导入的方法。分享给大家供大家参考。具体分析如下: python学习手册中写道: 定义模块,只要使用文本编辑器,把一些python代码输入到文本中,然后以.py为后缀名进行保存,任何此类文件都会被认为是python模块。 比如