问题标签 [python-module]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
32474 浏览

python - 模块可以像对象一样具有属性吗?

使用 python 属性,我可以做到这一点

调用一个函数,而不仅仅是返回一个值。

有没有办法用模块做到这一点?我有一个我想要的案例

调用一个函数,而不仅仅是返回存储在那里的值。

0 投票
3 回答
703 浏览

python - python导入相关模块

我在同一目录中有 Python 模块 a.py 和 b.py。鉴于 a.py 可能已从另一个目录导入或直接执行,我如何可靠地从 a.py 导入 b.py?该模块将被分发,因此我无法对单个路径进行硬编码。

我一直在玩__file__sys.path 和 os.chdir,但感觉很乱。而且__file__并不总是可用。

0 投票
3 回答
3889 浏览

python - 在 Django 视图中有效地导入模块

我想知道 - 人们如何处理在 django 视图中导入大量常用模块?什么是有效地做到这一点的最佳方法?

例如,我有一些观点,例如,

而且据我所见,他们每个人都需要使用 HttpResponse 或其他此类常用模块。此外,其中一些需要 BeautifulSoup 之类的东西,而另一些则需要其他东西(md5、auth 等)。

我在开始项目时所做的是制作一个include_all.py包含我大部分常见导入的内容,然后在视图本身中添加这些特定的东西。所以,我有类似的东西,

admin_views.py

search_views.py

随着时间的推移,include_all 变成了一个杂项文件,其中包含了任何需要的东西——结果,许多视图最终导入了他们不需要的模块。

这会影响效率吗?也就是说,python(django?)是否将所有模块导入一次并存储/缓存它们,以便任何其他需要它们的视图不必再次导入它?或者我调用这个长文件的方法是一种非常低效的方法 - 我最好坚持在每个视图中单独导入这些模块?

这类事情也有最佳实践吗?

谢谢!

0 投票
1 回答
3518 浏览

python - 为什么 __builtins__ 既是模块又是字典

我正在使用内置模块插入一些实例,因此可以全局访问它们以进行调试。该__builtins__模块的问题在于它是主脚本中的一个模块,并且是模块中的一个字典,但是由于我的脚本取决于案例可以是主脚本或模块,所以我必须这样做:

有没有比这更短的解决方法?更重要的是,为什么会__builtins__这样?

这是一个脚本来查看这个。创建一个模块 a.py:

创建一个模块 b.py:

现在运行 python a.py:

0 投票
4 回答
242 浏览

python - 在不使用异常的情况下检查 Python 中的模块

我可以检查 Python 中的模块,例如:

但我不想使用 try/except。有没有办法做到这一点?(它应该适用于 Python 2.5.x。)

注意:不使用 try/except 的原因是任意的,只是因为我想知道是否有一种方法可以在不使用异常的情况下对其进行测试。

0 投票
3 回答
7555 浏览

python - 在 Django 中导入 python 模块时出错

在我的 Django 项目中,以下行引发 ImportError:“没有名为 elementtree 的模块”。

但是,该模块已安装(即,我可以运行交互式 python shell,并键入没有任何 ImportError 的确切行),并且包含该模块的目录位于 PYTHONPATH 上。但是当我在浏览器中访问任何页面时,它以某种方式找不到模块,并抛出 ImportError。这可能是什么原因造成的?

0 投票
9 回答
787414 浏览

python - 如何使用 Python 找出我的 PYTHONPATH?

如何PYTHONPATH从 Python 脚本(或交互式 shell)中找出系统变量中列出的目录?

0 投票
1 回答
582 浏览

python - 在 Windows 98 中通过网络访问 py2exe 程序会引发 ImportErrors

我正在许多客户端机器上的一台服务器机器上运行一个 py2exe 编译的 python 程序(映射到每台机器上的网络驱动器,比如 W:)。

对于 Windows XP 和更高版本的机器,到目前为止,Python 获取 W:\python23.dll 的问题为零(是的,我使用 Python 2.3.5 来兼容 W98 等等)。然后它将使用 W:\zlib.pyd 解压缩包含所有 .pyc 文件(如 os 等)的 W:\library.zip,然后将其导入并且程序运行没有问题。

我遇到的问题是在一些 Windows 98 SE 机器上(注意:一些 Windows 98 SE 机器,其他机器似乎没有明显问题)。发生的情况是,程序从 W: 运行,我假设找到了 W:\python23.dll(因为我得到 Python ImportErrors,我们需要能够执行 Python import 语句),但是有几件事不起作用:

1)如果 W:\library.zip 包含 .pyc 文件的唯一副本,我会得到 ZipImportError: can't decompress data; zlib not available(废话,考虑到 W:\zlib.pyd 是可用的,并且可以在同一网络上的 XP 和更高版本的机器上正常工作)。

2) 如果 .pyc 文件实际上是通过 py2exe 捆绑在 python exe 中,或者放在与 .exe 相同的目录中,或者放在一个命名的子目录中,然后将其设置为 PYTHONPATH 变量的一部分(例如 W:\pylib ),我得到ImportError: no module named os(os 是第一个导入的模块,在 sys 和其他任何东西之前)。

想一想,如果 os 在它之前被导入, sys.path 将无法搜索?我将尝试切换这些导入的顺序,但我的问题仍然存在:为什么这是一个零星的问题,在某些网络上工作而不在其他网络上工作?我将如何强制 Python 找到捆绑在我运行的可执行文件中的文件?我可以立即访问正在工作的 Windows 98 SE 机器,但我只能在每天早上在他们的商店开业之前访问不工作的机器(我的一位客户)。

提前致谢!


编辑:好的,向前迈出了一大步。使用 PY2EXE_VERBOSE 调试后,特定 W98SE 机器上出现的问题是它在查找导入时没有使用正确的路径语法。首先,它似乎没有读取 PYTHONPATH 环境变量(可能有一个我不知道的特定于 py2exe 的变量,比如 PY2EXE_VERBOSE)。

其次,它在放弃之前只在一个地方查找(如果文件捆绑在 EXE 中,它会在那里查找。如果没有,它会在 library.zip 中查找)。

编辑 2:事实上,据此,Python解释器中的 sys.path 与 Py2exe 可执行文件之间存在差异。具体来说,sys.path contains only a single entry: the full pathname of the shared code archive.布拉。没有退路?甚至没有当前的工作目录?我会尝试添加W:\到 PATH,但 py2exe 不符合任何类型的系统库定位标准,所以它不起作用。

现在是有趣的一点。它尝试加载 atexit、os 等的路径是:

W:\\library.zip\<module>.<ext>

请注意 library.zip 后的单斜杠,但驱动器号后的双斜杠(如果这是有意的并且应该有效,请纠正我)。看起来如果这是一个字符串文字,那么由于斜杠没有加倍,它被读取为(无效)转义序列并打印原始字符(给出W:\library.zipos.pyd, W:\library.zipos.dll, ...而不是斜杠);如果它不是字符串文字,则双斜杠可能不会自动进行规范路径(应该如此),因此双斜杠会混淆模块加载器。就像我说的,我不能仅仅set PYTHONPATH=W:\\library.zip\\因为它忽略了那个变量。

在我的程序开始时使用 sys.path.append 可能是值得的,但是硬编码模块路径绝对是最后的手段,特别是因为问题发生在过时操作系统的 ONE 配置中。

有任何想法吗?我有一个,这是sys.path我需要os的。另一个是再次附加os.getenv('PATH')或添加os.getenv('PYTHONPATH')到 sys.path...,需要os模块。该site模块也无法初始化,所以我不能使用 .pth 文件。

我最近还在程序开始时尝试了以下代码:

但它无法加载 linecache.pyc 或其他任何内容;它实际上无法从事物的外观上执行这些命令。有什么方法可以使用不需要 linecache 来动态修改 sys.path 的内置功能?还是我只能硬编码正确的 sys.path?

0 投票
3 回答
4523 浏览

python - Python:如何禁止从模块中导入类?

我试过:

但是,这当然只是为了:

有没有办法阻止类的导入。我担心有人会写我的代码的 API 级别的混淆:

它会导致调试混乱。

0 投票
3 回答
287 浏览

python - python导入模块比较麻烦

我昨天问了一个类似的问题,但从那以后遇到了一个非常奇怪的问题。使用此目录结构:

models/__init__.py 文件有这一行:

并且 pages/__init__.py 有

在 pages.py 中,为了使用 user.py 或 other.py 中的任何类,我必须有

在顶部,然后我可以声明一个这样的User类:

如果我排除顶部的任何一个 import-ing 语句,我会收到类似的错误

任何帮助,将不胜感激。我喜欢 Python,但我希望它的导入功能更像 PHP。