问题标签 [runpy]

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 投票
3 回答
3627 浏览

python - 单元测试__main__.py

我有一个 Python 包(Python 3.6,如果有区别的话),我设计为作为“python -m 参数”运行,我想为 __main__.py 模块编写单元测试。我特别想验证它是否正确设置了退出代码。是否可以使用 runpy.run_module 执行我的 __main__.py 并测试退出代码?如果是这样,我如何检索退出代码?

更清楚地说,我的 __main__.py 模块非常简单。它只是调用一个已经过广泛单元测试的函数。但是当我最初编写 __main__.py 时,我忘记了将该函数的结果传递给 exit(),所以我希望在单元测试中模拟主函数以确保正确设置退出代码。我的单元测试看起来像:

我的问题是,我怎样才能得到我在这里写的“mod_rc”?

谢谢。

0 投票
0 回答
249 浏览

python - 从脚本执行 runpy.run_path 时出错

我有一个小的 python 文件c:\tmp\server_config,它定义了一个字典,如下所示:

我希望从另一个脚本中访问这本字典。我可以从命令行执行以下命令:

但是,当我尝试settings = run_path("c:\\tmp\\server_config.py")从另一个脚本中执行时,我得到以下 Traceback:

我在做什么错(Python 3.7,Windows10)?

0 投票
2 回答
10488 浏览

python - 如何成功编译 python 3.x

在尝试编译 python 3.7 时,我点击了Could not import runpy module

任何有关如何克服这一点并安装 python3.7 的建议表示赞赏。

编辑 - 下面列出的解决方案似乎适用于各种其他 python 版本,所以我将标题从 3.7 更改为 python 3.x

0 投票
3 回答
206 浏览

python - 在 runpy 中使用多处理

我有一个使用multiprocessing. 我正在使用另一个脚本执行此模块runpy。但是,这会导致 (1) 模块运行两次,以及 (2)multiprocessing作业永远不会完成(脚本只是挂起)。

在我的最小工作示例中,我有一个脚本runpy_test.py

和一个目录module_test包含一个空的__init__.py和一个__main__.py

当我运行runpy_test.py时,我得到:

脚本挂起。

如果我删除pool.map调用(或者如果我直接运行__main__.py,包括pool.map调用),我会得到:

我在 Python 2.7.5 中的 Scientific Linux 7.6 上运行它。

0 投票
1 回答
97 浏览

python - 更改 UniVerse 中的默认 RUNPY 目录

我有 UniVerse 11.3.1,并且一直在利用Rocket 的u2py模块来运行 python 代码。总的来说,这很棒。从 PICK 调用 python 代码时,我通常会这样做PyCallFunction。但是,我有许多直接从RUNPYTCL 中的命令运行的脚本。

在重构我的一些目录时,我不再让PP目录存放我的 python 代码。我可以从一个新目录调用我的脚本,比如PYSCRIPTS,但这意味着如果我有一个调用的 bash 或 TCL 脚本,RUNPY我现在必须明确地调用我从哪个目录调用它:

RUNPY PYSCRIPTS test.py而不是RUNPY test.py.

有没有办法更改RUNPY查看的默认目录?这与 PYTHONPATH 配置有关,还是在 UniVerse 二进制文件中硬编码?一个小小的不便,但我宁愿通过配置而不是硬编码来处理这些脚本的父目录。

0 投票
2 回答
232 浏览

python-3.x - argparse 在调用脚本时有效,但在合并到新脚本时无效

这是我的基本问题:

我有以下内容: 文件名:parseFastq.py 执行:通过命令行代码运行它:python3 parseFastq.py --fastq /Users/remaining_dir/test1.fastq

此代码有效!

但是,当我复制 parseFastq.py 的组件时,就会出现问题。

下面是代码:

首先定义类...这部分在我的新脚本上运行良好。

这是在同一个脚本中调用它时不起作用的代码;它与将碎片放入:

我尝试了以下方法,但无法获得应包含以下元组的 fastqfile: (seqHeader,seqStr,qualHeader,qualStr)

尝试:

错误:

尝试:

输出[332]:

下一行:

错误:

如果有帮助,我将包含一些示例 fastq 数据

任何帮助将不胜感激为什么当我运行脚本时它会起作用,但现在当我尝试并合并到脚本中时

0 投票
0 回答
36 浏览

python - runpy 可以安全使用吗?

我正在编写一些需要来自下游包层次结构的数据的代码。考虑以下项目结构:

以及以下代码:

这里的重点是main.py不导入subpck.module,所以后者的代码没有运行。但是,我已经成功使用runpyinmain.py运行subpck.module并获得了预期的结果。

我的问题是这样的:

如果我能以某种方式弄清楚如何封装runpyin的使用SomeClass,这样做安全吗?

我一直在阅读runpy 文档,但如果我遗漏了什么,我会很紧张。我也没有听说这对于可能在生产中使用的代码是否是一个很大的“禁忌”。

任何帮助表示赞赏。

0 投票
1 回答
169 浏览

python-3.x - 捕获 runpy.run_module 标准输出

我无法使用 StringIO 将 runpy.run_module 的标准输出捕获到变量中。
为了演示这个问题,我使用 arg 开关创建了一个名为 runpy_test.py 的脚本(代码如下);

  • 0 = 不重定向标准输出。
  • 1 = 使用 StringIO 重定向,捕获到变量,打印变量。

控制台输出

我期待python .\runpy_test.py 1打印pip 20.0.2 from C:\ProgramData\Anaconda3\lib\site-packages\pip (python 3.6),但正如您从上面的控制台捕获中看到的那样,我什么也没得到。

运行py_test.py

我猜sys.stdout在打印之前没有正确地重新初始化,因为与 相关runpy.run_module,但不确定如何调试。任何想法都会很棒,解决方案会更好。
我的环境是使用 conda 4.8.3 的 Python 3.6.10。
提前致谢。

0 投票
0 回答
20 浏览

python - 从主脚本运行具有不同 Python 版本的多个脚本

假设我有 3 个接受用户输入的脚本,可能有不同的 Python 版本,并在不同的模块中导入:

脚本 #1

脚本 #2

脚本 #3

我想创建一个主脚本,A)按顺序运行每个脚本(例如:脚本 #2 在脚本 #1 完成之前不会运行),B)仍然允许用户从主脚本输入用户输入, C) 使用正确的 Python 版本运行脚本(如果可能,使用具有必要模块/包的特定环境)

我见过多个使用subprocesswithPopen或 call 的例子:

但我也看到警告不要使用suprocess来执行此操作(尤其是使用)(不知道为什么)。Popen我也不确定如何使用 subprocess 指定 Python 版本和输入变量(尽管看起来您可以使用Popen以某种方式输入 args 作为字符串)。我知道还有其他的 mods/pacakges,比如 runpy,也可以用于类似的效果。关于使用什么以及如何在这里最好地实现我的最终目标的任何建议?

0 投票
2 回答
290 浏览

python - 有没有办法将标志传递给runpy?

我正在寻找一种使用runpy或其他工具传递杂项选项的方法。

特别是,我想在另一个未优化的 python 脚本中获得优化的 python 脚本的输出。

我尝试过使用子进程,但我无法像在 runpy 中那样提取我需要的对象。