小编Y0d*_*0da的帖子

使用可执行文件打包Python库

我刚刚完成了一个模块,想要打包它.我已经阅读了包含python应用程序的文档和这个问题,但是当我没有要导入的包但是要启动的脚本时,我不确定如何继续.

该项目看起来像这样:

Project/
|-- README
|-- requirement.txt
|-- driver.py
|-- run.py
|-- module_1
|   |-- __init__.py
|   |-- class_1.py
|   |-- class_2.py
|-- module 2
|-- |-- __init__.py
|-- |-- class_1.py
|-- |-- class_2.py
Run Code Online (Sandbox Code Playgroud)

为了启动我做的工具:

python run.py arg1 --option arg2
Run Code Online (Sandbox Code Playgroud)

driver.py导入所有其他模块并定义一个Driver类和一些函数.run.py导入driver.py,解析参数,设置记录器并一个接一个地调用函数来完成工作.

我不确定配置setup.py,我还需要一个全局__init__.py的根?根据我的理解,我只能用它的参数import Project来启动脚本run.py.

从其他读数,也许我应该试着告诉那Driver.py是包并使用entry_points选项setup().但我不明白如何正确地完成所有这些工作.

谢谢你的热心帮助!

python packaging setup.py

6
推荐指数
1
解决办法
1936
查看次数

Pathos、Dask、futures,并行集群应用使用哪一个?

我在这里很困惑。我有一个受 CPU 限制的应用程序,因此我开始使用多进程实现并行化来克服 GIL 问题。

我第一次尝试使用multiprocessingfutures但遇到了酸洗问题,所以我去pathos使用哪个dill作为pickle替代品。

一切正常,但我想知道我是否使用的是最“面向未来”的解决方案。我也见过dask,但我不知道它是否会在酸洗类问题的情况下起作用(请参阅Python:(Pathos)多处理与类方法)。从文档来看,它使用了futures所以我假设它不会完成这项工作。

其次,我希望能够一次使用两台服务器,并且我已经看到这可以通过pathos(also dask) 实现,但我不明白它到底是如何工作的。这个答案/sf/answers/1886378091/仅显示如何使用一台服务器。使用 2 个或更多怎么样?我找不到任何关于此的示例,尽管包信息中描述的似乎是可能的。

感谢您的帮助!

python parallel-processing multiprocessing pathos dask

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

setup.py中extras_require的依赖关系链接

  1. 安装带有其他功能的软件包时,是否有一种方法可以自动处理依赖关系链接,而无需--process-dependency-links像通常那样调用install_requires

    pip install -e .[extra] --process-dependency-links
    
    Run Code Online (Sandbox Code Playgroud)

    我需要这个,因为依赖项仅位于私有git repo上。

  2. 是否可以使用安装其他功能python setup.py install

  3. 是否--process-dependency-links已弃用仍要考虑?我不确定这里的状态。

python pip setuptools setup.py

5
推荐指数
2
解决办法
396
查看次数

用sympy缓慢替换符号矩阵

我正在研究一个符号雅各J比大小的矩阵QxQ.该矩阵的每个系数包含Q符号,从f[0]f[Q-1].我想要做的是替代每个符号的每一个系数J与已知值g[0]g[Q-1](这是没有更多的符号).我发现最快的方法如下:

for k in range(Q):
    J = J.subs(f[k], g[k])
Run Code Online (Sandbox Code Playgroud)

但是,我觉得这个"基本"操作很长!例如,使用此MCVE:

import sympy
import numpy as np
import time

Q = 17
f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16 = \
    sympy.symbols("f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16")
f = [f0, f1, f2, f3, f4, …
Run Code Online (Sandbox Code Playgroud)

python numpy sympy substitution differential-equations

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

上传后解压工件 (store_artifacts)

我们使用 Sphinx 构建 Python 文档,然后存储工件。然后,GitHub 直接在 CI 中显示一个链接以打开index.html.

但是,在构建 Sphinx 文档时,会创建数千个文件,这会减慢工件的上传速度。为了减少上传时间,我可以从doc上传压缩文件夹。那么,如何保存未压缩的文件夹呢?这是必需的,因为我们有一个文件artifact_path需要index.html. 或者还有其他方法可以解决这个问题吗?

- store_artifacts:
    path: folder.tar  # untar after?
Run Code Online (Sandbox Code Playgroud)

免责声明:这是针对 SciPy 的,我是一名核心开发人员。这将非常有帮助,因为它花费了该管道大约 30% 的构建时间。

python python-sphinx circleci

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