有没有办法获取列为导入的导入模块的列表?
globals()返回一个无序的字典。
我已将 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包:
package
|_subpackage1
|_module11.py
|_module12.py
|___init__.py
|_subpackage2
|_module21.py
|_module22.py
|___init__.py
|___init__.py
Run Code Online (Sandbox Code Playgroud)
所有模块都需要通用的外部包,如numpy或os,并相互调用:例如module11调用module21和module11调用module21
到目前为止,我的所有模块都有一个很长的导入标头,用于导入外部包和我自己的模块。我说当我用 Ananconda 调用我的模块时,我的脚本初始化非常慢,我认为这是因为那些复杂的互连导入
对于外部包和我自己的模块,我应该在不同的地方放置什么__init__.py以避免多次导入同一包,以及每个模块中的长标头?
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执行结果:
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
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
我正在尝试完成练习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还是比较陌生,我尝试学习“ Pythonic”的做事方式来为Python开发打下坚实的基础。也许我想实现的根本不是Python,但我仍在寻找解决该问题的“正确”方法。
我正在构建一个应用程序,为此我正在为其创建模块。我只是注意到我的一个模块有7个不同的.py Python文件,都导入了3种不同的东西。因此,所有这些文件共享这些导入。
我尝试删除它们,然后将这些导入插入到文件夹中的空init .py中,但没有成功。
如果可能的话,由于所有这些模块文件都需要这些导入,因此我不希望将它们逐个导入每个文件中。
我该怎么做才能执行普通导入?
非常感谢您,我非常感谢您的帮助。
我目前正在将一个项目(以前的大文件)重新分解为几个单独的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(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) 我正在使用Choregraphe编程Pepper机器人,并且使用的是真正的机器人。我的问题是如何将python模块安装到机器人上?因为我需要使用请求包进行API调用。
我一直在浏览互联网,但找不到任何解决方案。
python-module ×10
python ×7
python-3.x ×5
import ×2
python-2.7 ×2
aws-lambda ×1
global ×1
init ×1
lib ×1
namespaces ×1
package ×1
pepper ×1
python-2.x ×1