English 中文(简体)
如何适当利用沙尔模块中的相对或绝对进口?
原标题:How to properly use relative or absolute imports in Python modules?

在沙尔使用相对进口有一处缺陷,你无法再操作这些模块,因为你会有一个例外:<代码>。 企图在非包装材料/编码中相对进口

# /test.py: just a sample file importing foo module
import foo
...

# /foo/foo.py:
from . import bar
...
if __name__ == "__main__":
   pass

# /foo/bar.py: a submodule of foo, used by foo.py
from . import foo
...
if __name__ == "__main__":
   pass

• 我应如何修改样本代码,以便能够执行所有内容:test.pyfoo.pybar.py

I m 寻求与Python 2.6+(包括3.x)合作的解决办法。

最佳回答

首先,我假定,你会知道你撰写的那份书面材料会带来一个循环进口问题,因为 f进口会酒吧和反vers;试图增加进口。

from foo import bar

试样。 必须改变榜样,以便工作。

因此,当相对进口失败时,你再次要求实际上会回落到绝对进口;事实上,如果你重新实施oo。 p或酒吧。 如同主要模块一样,其他模块也只是根基,如果它们与另一个系统模块分享名称,那么一个单元的选取取决于ys的顺序。 由于目前的继承人通常是第一种,因此,如果能够使用当地模块,即如果你真的os。 目前的工地中的粉碎材料,而不是放在一起。

材料建议:

foo.py

try:
    from . import bar
except ValueError:
    import bar

if __name__ == "__main__":
    pass

酒吧:

if __name__ == "__main__":
    pass

从适当职位上打字通常比way>/em>更好。

python -m foo.bar

或许是前进的最佳途径。 .runs the model as a script

问题回答

你们可以开始以不同的方式管理单元,作为独立单元:

而不是:

python foo/bar.py

使用:

python -mfoo.bar

当然,<代码>foo/__init__.py 档案必须在场。

请注意,您在<代码>foo.py和bar.py之间有循环依赖——这赢得了笔工作。 我认为,这只是你的一个错误。

更新:将这一条作为<代码>foo/bar.py第一行似乎也非常有用:

#!/usr/bin/python -mfoo.bar

然后,你可以直接在德国统计局系统中执行文字。

奇特相对进口:你们应当把你的包裹名称视为全球的,不管怎样。

适当编辑<条形码>。 这里有一些思考的食物:

# one directory up
_root_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
sys.path.insert(0, _root_dir)for now

页: 1

只有在:

python test.py

测试.py 进口 foo.py和 foo。 粉碎可以相对进口从试验中进口的任何东西。 页: 1

你可以做:

cd foo
python foo.py
python bar.py

它永远不会奏效。

你们可以尝试ys子、app子或ys子,但你方言会改道,你在露天时会遇到问题。

为什么不把“主人”放在不同的卷宗中?

迄今为止,我发现的唯一解决办法是根本不使用相对进口。

由于目前的限制,我不禁要问,什么时候有人要用on子的相对进口。

关于我使用<代码>sys.path的所有组合 现有目录作为第一种理由,仅使用import foo,而不用,从进口 foo,因为它将这样做。





相关问题
Can Django models use MySQL functions?

Is there a way to force Django models to pass a field to a MySQL function every time the model data is read or loaded? To clarify what I mean in SQL, I want the Django model to produce something like ...

An enterprise scheduler for python (like quartz)

I am looking for an enterprise tasks scheduler for python, like quartz is for Java. Requirements: Persistent: if the process restarts or the machine restarts, then all the jobs must stay there and ...

How to remove unique, then duplicate dictionaries in a list?

Given the following list that contains some duplicate and some unique dictionaries, what is the best method to remove unique dictionaries first, then reduce the duplicate dictionaries to single ...

What is suggested seed value to use with random.seed()?

Simple enough question: I m using python random module to generate random integers. I want to know what is the suggested value to use with the random.seed() function? Currently I am letting this ...

How can I make the PyDev editor selectively ignore errors?

I m using PyDev under Eclipse to write some Jython code. I ve got numerous instances where I need to do something like this: import com.work.project.component.client.Interface.ISubInterface as ...

How do I profile `paster serve` s startup time?

Python s paster serve app.ini is taking longer than I would like to be ready for the first request. I know how to profile requests with middleware, but how do I profile the initialization time? I ...

Pragmatically adding give-aways/freebies to an online store

Our business currently has an online store and recently we ve been offering free specials to our customers. Right now, we simply display the special and give the buyer a notice stating we will add the ...

Converting Dictionary to List? [duplicate]

I m trying to convert a Python dictionary into a Python list, in order to perform some calculations. #My dictionary dict = {} dict[ Capital ]="London" dict[ Food ]="Fish&Chips" dict[ 2012 ]="...