标签: python-module

获取python中导入模块的有序列表

有没有办法获取列为导入的导入模块的列表?

globals()返回一个无序的字典。

python python-module python-import python-3.x

5
推荐指数
1
解决办法
4182
查看次数

使用 Py_SetPath() 让 Python 在不同位置查找 Lib

我已将 Python 嵌入到应用程序中,foo.exe. 当它运行时,Python 被调用并立即查找Lib. 我可以让它工作的唯一方法是将Lib(Python 的模块目录库)放在foo.exe.

有没有办法可以将Python重定向到其他地方,例如Python/Lib?我无法更改PATH(这是 Windows)并且我不想破解 Python 源代码。

基本上,我无法让 Py_SetPath() 工作,并且我无法在互联网上找到任何实际示例。

更新:

好的,这有效:

  #define MYMAXPATHLEN 1000
  static wchar_t progpath[MYMAXPATHLEN + 1];

  wchar_t* pdir = L"\\My_New_Location\\Python\\Lib";
  wchar_t* pdelim = L";";
  wchar_t* pypath = NULL;
  GetModuleFileNameW(NULL, progpath, MYMAXPATHLEN);
  reduce(progpath);
  wcscat(progpath,pdir);
  // I get the present module path and add the extra dirs to access Lib code

  wcscat(progpath, pdelim);  // I add a path delimiter

  pypath = Py_GetPath(); …
Run Code Online (Sandbox Code Playgroud)

python python-module python-3.x lib

5
推荐指数
1
解决办法
1883
查看次数

避免在多个 python 模块中多次导入相同的包

我正在设计一个具有以下结构的Python包:

package
 |_subpackage1
     |_module11.py
     |_module12.py
     |___init__.py
 |_subpackage2
     |_module21.py
     |_module22.py 
     |___init__.py
 |___init__.py
Run Code Online (Sandbox Code Playgroud)

所有模块都需要通用的外部包,如numpyos,并相互调用:例如module11调用module21module11调用module21

到目前为止,我的所有模块都有一个很长的导入标头,用于导入外部包和我自己的模块。我说当我用 Ananconda 调用我的模块时,我的脚本初始化非常慢,我认为这是因为那些复杂的互连导入

对于外部包和我自己的模块,我应该在不同的地方放置什么__init__.py以避免多次导入同一包,以及每个模块中的长标头?

python import python-module init package

5
推荐指数
0
解决办法
254
查看次数

aws lambda,ask_sdk_core 模块未导入

ask_sdk_core包含在我的 lambda 函数requirements.txt文件中。但是,当我运行实际函数时, ask_sdk_core不会导入。我正在跟踪在 中找到的 cake walk 示例, https://github.com/alexa/skill-sample-python-first-skill/tree/master/module-1 但正在尝试在我的个人 AWS 帐户上创建 lambda,而不是在 Alexa 托管的 lambda 上。

当我将 Alexa 技能指向 Alexa 托管的技能时,技能会按预期运行,但是当指向我通过从 Alexa 技能套件复制代码创建的 lambda 时,lambda 函数不会返回任何结果。

包含 lambda 在个人 AWS 账户上的照片。我尝试更改不同函数名称的多个值,但似乎没有任何效果。

控制台中的 Lambda 控制台 2 中的 Lambda

lambda执行结果:

Response:
{
  "errorMessage": "Unable to import module 'lambda_function': No module named 'ask_sdk_core'",
  "errorType": "Runtime.ImportModuleError"
}

Request ID:
"7f220b6d-49e4-4fbe-99b5-e5cc1d9c129a"

Function Logs:
START RequestId: 7f220b6d-49e4-4fbe-99b5-e5cc1d9c129a Version: $LATEST
[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': No module named 'ask_sdk_core'END RequestId: 7f220b6d-49e4-4fbe-99b5-e5cc1d9c129a
REPORT RequestId: 7f220b6d-49e4-4fbe-99b5-e5cc1d9c129a  Duration: 11.39 …
Run Code Online (Sandbox Code Playgroud)

python-module amazon-web-services python-3.x aws-lambda alexa-skills-kit

5
推荐指数
1
解决办法
2698
查看次数

如何在 __main__.py 中处理 python3 多处理

Il 提出的问题,我不明白问题的真正原因(这似乎与我在子进程之一中使用烧瓶有关)。

请忽略此内容(由于赏金而无法删除)

本质上,当将 python 库作为模块运行时,我必须启动一些进程和/或池。

然而,因为这__name__ == '__main__'始终是正确的__main__.py,这被证明是一个问题(请参阅多处理文档:https ://docs.python.org/3/library/multiprocessing.html )

我尝试了多种解决方案,范围从: pytgquabr.com:8182/58288945/using-multiprocessing-with-runpy 到基于文件的互文本,只允许main的内容运行一次,但多处理仍然表现得很奇怪(例如进程几乎死掉)一旦它们启动且没有错误日志)。

知道解决这个问题的“正确”方法是什么吗?

python-module multiprocessing python-multithreading python-3.x

5
推荐指数
1
解决办法
474
查看次数

"ImportError:没有名为"的模块"错误似乎与我的代码无关

我正在尝试完成练习47学习Python硬道路,第2版,但我在运行时收到此错误tests/ex47_tests.py:

File "tests/ex47_tests.py", line 3, in <module>
    from ex47.game import Room
ImportError: No module named ex47.game
Run Code Online (Sandbox Code Playgroud)

我认为这是我在我的代码中做错的事情,因为我对此很新,所以我从一个似乎已经成功完成练习的GitHub用户克隆了这个repo.

我们的代码的相关部分不仅相同,而且当我尝试运行tests/ex47_tests.py我从他克隆的部分时,我收到相同的错误.所以现在我迷失了,并希望有人为我找到解决方案.有任何想法吗?

python python-module

4
推荐指数
1
解决办法
3378
查看次数

是否自动导入给定文件夹中的所有Python文件?

我对Python还是比较陌生,我尝试学习“ Pythonic”的做事方式来为Python开发打下坚实的基础。也许我想实现的根本不是Python,但我仍在寻找解决该问题的“正确”方法。

我正在构建一个应用程序,为此我正在为其创建模块。我只是注意到我的一个模块有7个不同的.py Python文件,都导入了3种不同的东西。因此,所有这些文件共享这些导入。

我尝试删除它们,然后将这些导入插入到文件夹中的空init .py中,但没有成功。

如果可能的话,由于所有这些模块文件都需要这些导入,因此我不希望将它们逐个导入每个文件中。

我该怎么做才能执行普通导入?

非常感谢您,我非常感谢您的帮助。

python python-module python-2.x python-2.7

4
推荐指数
1
解决办法
1429
查看次数

Python在另一个文件中导入模块

我目前正在将一个项目(以前的大文件)重新分解为几个单独的python文件,每个文件都运行我的应用程序的特定部分.例如,GUIthread.py运行GUI,Computethread.py做一些数学等等.

每个线程包括从导入模块等使用功能math,time,numpy,等等等等

我已经有一个globalClasses.py包含我的数据类型的类定义的文件,每个.py文件在开始时导入,按照这里的建议:http://effbot.org/pyfaq/how-do-i-share-global-variables-跨模块.htm.这很好用.

我想要做的是将所有我的第三方模块导入到globals文件中,这样我就可以编写import math一次,但是我的所有项目文件都可以使用math函数.

问题:

这有可能吗?

2.这是一个好主意/它是不是很好的Python实践?

我目前的解决方案就是放

import math 
import time
import numpy
...
Run Code Online (Sandbox Code Playgroud)

(加上我正在使用的所有其他模块的导入)

在我的项目中的每个文件的顶部...但这似乎不是很整洁,并且在将代码块从一个文件移动到另一个文件时很容易忘记移动依赖项的import语句...

python global python-module python-import python-2.7

4
推荐指数
2
解决办法
4480
查看次数

如何在(子)模块中使用__init__.py来定义命名空间?

我的问题是关于编写Python(3.x)包和(子)模块以及正确使用__init__.py文件来声明命名空间.
我以前用C++编写代码,所以我喜欢使用很多单独的文件来组织项目.例如,(imo)如果模块包含多个类,则每个类都应位于单独的文件中.

由于我在Python方面缺乏经验,因此很难在一个简单的问题中表达我的想法.所以让我们考虑下面的小python包作为例子.

目录布局

dir
 |
 +-- example
 |    |
 |    +-- script.py
 |
 +-- package
      |
      +-- __init__.py
      |
      +-- foo.py
      |
      +-- subpackage
           |
           +-- __init__.py
           |
           +-- bar.py
Run Code Online (Sandbox Code Playgroud)

我们来看看这些文件.

文件内容

package/foo.py:

def foo:
    print('foo')
Run Code Online (Sandbox Code Playgroud)

package/subpackage/bar.py:

def bar:
    print('bar')
Run Code Online (Sandbox Code Playgroud)

以下example/script.py工作正常.

import sys
sys.path.insert(0, '..')

import package
import package.subpackage


package.foo.foo()
package.subpackage.bar.bar()
Run Code Online (Sandbox Code Playgroud)

我不喜欢使用package.foo.foo()/ package.subpackage.bar.bar()并且想使用package.foo()/ package.subpackage.bar().

而且我不想使用from package.subpackage.bar import bar,因为我不想将子包的命名空间混合到脚本中.

我使用这些__init__.py文件来实现这一目标.

package/__init__.py:

from …
Run Code Online (Sandbox Code Playgroud)

python import namespaces python-module python-3.x

4
推荐指数
2
解决办法
3815
查看次数

Pepper机械人:上传python模块

我正在使用Choregraphe编程Pepper机器人,并且使用的是真正的机器人。我的问题是如何将python模块安装到机器人上?因为我需要使用请求包进行API调用。

我一直在浏览互联网,但找不到任何解决方案。

python-module pepper

4
推荐指数
1
解决办法
1002
查看次数