小编han*_*ine的帖子

如何使用现代 Python 重定向模块导入?

我正在维护一个 python 包,其中我做了一些重组。现在,我想支持仍然这样做的客户,from my_package.old_subpackage.foo import Foo而不是新的from my_package.new_subpackage.foo import Foo,而不明确重新引入许多进行转发的文件。(old_subpackage仍然存在,但不再包含foo.py。)

我了解到有“加载器”和“查找器”,我的印象是我应该为我的目的实现一个加载器,但到目前为止我只实现了一个查找器:

RENAMED_PACKAGES = {
    'my_package.old_subpackage.foo': 'my_package.new_subpackage.foo',
}

# TODO: ideally, we would not just implement a "finder", but also a "loader"
# (using the importlib.util.module_for_loader decorator); this would enable us
# to get module contents that also pass identity checks
class RenamedFinder:

    @classmethod
    def find_spec(cls, fullname, path, target=None):
        renamed = RENAMED_PACKAGES.get(fullname)
        if renamed is not None:
            sys.stderr.write(
                f'WARNING: {fullname} was …
Run Code Online (Sandbox Code Playgroud)

python python-importlib

7
推荐指数
1
解决办法
1240
查看次数

如何修复“TraitError:...实例的‘输入’特征是‘只读’。”

与 vtk 的原始 Python API 相比,我一直更喜欢 Python 化的 tvtk,但使用从 MacPorts 获得的最新版本时,我遇到了基本功能不再起作用的问题。以下片段摘自tvtv 文档

from tvtk.api import tvtk
cs = tvtk.ConeSource()
cs.resolution = 36
m = tvtk.PolyDataMapper()
m.input = cs.output # <== fails here
a = tvtk.Actor()
a.mapper = m
p = a.property
p.representation = 'w'
print p.representation
Run Code Online (Sandbox Code Playgroud)

每次初始化“输入”特征时,我都会收到类似的错误

TraitError: The 'input' trait of a PolyDataMapper instance is 'read only'.
Run Code Online (Sandbox Code Playgroud)

我发现了许多类似的问题、错误报告等,但它们都指向与 VTK 6 (SetInputDataSetInputConnection不是SetInput)相关的更改,这些更改应该在 Mayavi 4.4.2 中得到支持,并且我有:

vtk @6.3.0_0+python27 (active)
py27-traits @4.5.0_0 …
Run Code Online (Sandbox Code Playgroud)

python macports enthought mayavi

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

将单个证书添加到请求

我正在尝试从 Linux 计算机上运行的 Python/requests 连接到公司内部网 HTTPS 服务器,该服务器使用内部 CA。我有一个 .pem 文件,其中包含我们的证书(4096 位 RSA、CSSM_KEYUSE_VERIFY、CA = true)。

\n\n

我将其放入/usr/share/ca-certificates并使用的子文件夹中sudo dpkg-reconfigure ca-certificates,以便将其集成到系统中。

\n\n

请求文档中,我发现:

\n\n
\n

您可以使用可信 CA \xe2\x80\xa6 的证书来验证 CA_BUNDLE 文件或目录的路径。如果将 verify 设置为目录的路径,则该目录必须已使用 OpenSSL 提供的 c_rehash 实用程序进行过处理。

\n
\n\n

我相信(但不确定)/etc/ssl/certs满足这个条件。

\n\n

现在,我尝试了多种方式的请求:

\n\n
requests.get(download_url)\n# throws requests.exceptions.SSLError: ("bad handshake: Error([\n#   (\'SSL routines\', \'ssl3_get_server_certificate\',\n#    \'certificate verify failed\')],)",)\n\nrequests.get(download_url, verify = False)\n# works, but is obviously bad (and spits out a warning)\n\nrequests.get(download_url, verify = pem_file_path)\n# same SSLError as above …
Run Code Online (Sandbox Code Playgroud)

python ssl python-requests

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