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

蟒蛇蛋及其相关进口

楚宇
2023-03-14
setup.py        # using setuptools
mymodule/
 |- __init__.py
 |- mymodule_core.py
 |- utils.py

当我从egg在系统中easy_installmymodule时,这个导入工作得很好:

# mymodule_core.py
from mymodule.utils import some_functions

但是我还希望在命令行中运行mymodule_core.py,而不需要安装它(用于简短的测试等)。在这种情况下,上一次导入将失败,这是有效的:

# mymodule_core.py
from utils import some_functions

如何处理导入以便在两种情况下都能工作?

    null

共有1个答案

杨轶
2023-03-14

一种简单的方法是处理imporderor,如下所示...

# mymodule_core.py
try:
    from mymodule.utils import some_functions
except ImportError:
    from utils import some_functions

...这在你的情况下很好。

如果您的包结构是“相对”导入不起作用,我倾向于在源文件的顶部放置类似的内容······

import sys
import os

PACKAGE_PARENT = '..'
SCRIPT_DIR = os.path.dirname(os.path.realpath(os.path.join(os.getcwd(), os.path.expanduser(__file__))))
sys.path.append(os.path.normpath(os.path.join(SCRIPT_DIR, PACKAGE_PARENT)))
 类似资料:
  • 我正在运行Ubuntu 18.04。 我使用mysql连接器-python连接Python到MySQL。 我使用的是Python 3.6.7,并且已经安装了mysql连接器-python。 我已经安装了mysql连接器-python-py3_8.0.13-1ubuntu18.10_all.deb. 在运行Python脚本时,mysql。连接器模块似乎加载正确,但脚本在碰到光标时失败。next()具

  • 假设我有一些资源,我想在用python编写的aws lambda中的不同请求之间共享。我应该如何实现这一点? 是否有“启动后”挂钩,或者我应该在第一次调用时惰性地创建资源?“延迟初始化”的缺点是,它意味着一些请求会随机变慢,因为您选择了一个消费者来承担启动成本。 此外…这些资源会在lambda可执行文件被“冻结”后幸存下来吗? 本页https://docs.aws.amazon.com/lambd

  • 我需要在我的中添加一个新的目录位置,但问题是我使用的是一个全新安装的系统(Linux),其中尚未定义任何。我读过并使用过,我认为我很了解它,但我不知道当没有存在时会发生什么。 我不能附加到不存在的东西上,但我希望当前发现的所有重要库都能正常工作,因此要小心,我在Python中使用了来获取所有标准值。然后我为定义了一个-变量,包括我刚刚找到的所有节点,以及我的新目录。但是哇,很多东西都停止工作了!P

  • 我想定义一个返回树节点值列表的函数。列表按级别顺序排列(从上到下,从左到右),如果缺少孩子,则在其位置插入“无”。 这是二叉树实现

  • 我有一些测试代码: 运行此代码时,我收到一个错误,显示未定义“inputed_num” 我的问题是:在wrap函数中,func是否可以得到“inputed_num”的闭包? 无论如何,如果没有,我应该如何实现我的目标:初始化一些值,并在主函数中直接使用这个值。 思考。

  • 我正在尝试使用本教程从一个使用selenium and beautiful soup的站点提取房地产列表信息:https://medium.com/@ben.sturm/scraping-house-listing-data-using-Selenium-and-Beautiful Soup-1CBB94BA9492 目的是在找到“下一页”按钮之前收集第一页的所有href链接,导航到下一页并收集该