相关疑难解决方法(0)

如何正确确定当前脚本目录?

我想看看在python中确定当前脚本目录的最佳方法是什么?

我发现,由于调用python代码的方法很多,很难找到一个好的解决方案.

这是一些问题:

  • __file__如果脚本执行时未定义exec,execfile
  • __module__ 仅在模块中定义

用例:

  • ./myfile.py
  • python myfile.py
  • ./somedir/myfile.py
  • python somedir/myfile.py
  • execfile('myfile.py') (来自另一个脚本,可以位于另一个目录中,并且可以有另一个当前目录.

我知道没有完美的解决方案,但我正在寻找解决大多数情况的最佳方法.

最常用的方法是os.path.dirname(os.path.abspath(__file__)),如果你从另一个脚本执行脚本,这实际上不起作用exec().

警告

任何使用当前目录的解决方案都将失败,根据调用脚本的方式或者可以在运行的脚本中更改它,可能会有所不同.

python pythonpath dirname

229
推荐指数
8
解决办法
10万
查看次数

ValueError:尝试相对导入超出顶级包

我正在玩Python的导入系统,以便更好地理解它是如何工作的,我遇到了另一个问题.我有以下结构

pkg/
    __init__.py
    c.py
    d.py

    subpkg/
        __init__.py
        a.py
        b.py
Run Code Online (Sandbox Code Playgroud)

在里面a.py我有以下代码:

from . import b
from .. import d
Run Code Online (Sandbox Code Playgroud)

在里面c.py我有以下内容:

import subpkg.a
Run Code Online (Sandbox Code Playgroud)

现在我收到以下错误:

ValueError:尝试相对导入超出顶级包

为什么呢?我该如何解决?我c.py从IDLE 运行,pkg应该被认为是一个包,因为它有__init__.py文件.

第一个导入工作正常,但它是以下不起作用:

from .. import d
Run Code Online (Sandbox Code Playgroud)

因为我试图从父包中导入一些东西,但显然我不能,因为一些奇怪的原因.

python-import python-3.x

33
推荐指数
2
解决办法
3万
查看次数

标签 统计

dirname ×1

python ×1

python-3.x ×1

python-import ×1

pythonpath ×1