小编jef*_*tle的帖子

python:PyPi公共模块:如何确定是否安全?

我已经完成了我的 python 3 应用程序,它使用了来自 PyPi 的多个公共模块。

但是,在我将它部署到我公司的企业中运行之前,该企业将处理我们客户的凭据并访问 3rd 方 API,我需要进行尽职调查,确保它们既安全又安全。

我必须执行哪些步骤:

  1. 验证 PyPi 模块的安全性和使用安全性,重要的是要注意目标 Python 3 应用程序将处理凭据?
  2. 最推荐的验证 PyPi 模块签名的方法是什么?
  3. PyPi 模块签名可以信任吗?

顺便说一下,Python 3 应用程序将在 Docker 容器中运行。

谢谢

python security pypi docker

8
推荐指数
1
解决办法
2059
查看次数

Sphinx的OS X安装:找不到'sphinx-build'和'sphinx-quickstart'

有关发现'sphinx-build'无法找到的关于此主题的几个"未答复"帖子:在Mac OS中找不到 sphinx-build -h命令

Sphinx在OSX上使用以下两种方式安装:

  • python3 -m pip install sphinx
  • brew install sphinx

在任一情况下,这两个命令sphinx-buildsphinx-quickstart无法找到.

即使python3 -m pip freeze显示安装:

Sphinx==1.3.6
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

谢谢

python macos python-sphinx

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

pip uninstall:"没有找到要卸载的文件."

我创建了一个python模块,称之为'foo_bar'.

我可以安装它,我可以升级它,但我无法卸载它.

我使用bdist_wheel构建我的模块:

$ python3 setup.py bdist_wheel
Run Code Online (Sandbox Code Playgroud)

我按如下方式安装和升级它:

$ python3 -m pip --timeout 60 install --upgrade dist/foo_bar-1.4.3-py3-none-any.whl
Run Code Online (Sandbox Code Playgroud)

它列在Python 3.4框架目录中:

ls -al /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/
drwxr-xr-x   12 samwise  admin     408 Jun 21 02:50 foo_bar
drwxr-xr-x    9 samwise  admin     306 Jun 21 02:50 foo_bar-1.4.3.dist-info
Run Code Online (Sandbox Code Playgroud)

它在pip冻结中列出:

$ python3 -m pip freeze
foo-bar==1.4.3
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试执行pip uninstall,则无法找到它的文件

$ python3 -m pip uninstall foo-bar
Can't uninstall 'foo-bar'. No files were found to uninstall.
Run Code Online (Sandbox Code Playgroud)

我在setup.py中做错了什么,因为它在卸载期间无法找到我的模块文件?

版本信息如下:

$ python3 --version
Python 3.4.4
$ …
Run Code Online (Sandbox Code Playgroud)

uninstall pip python-3.x python-wheel

6
推荐指数
4
解决办法
4344
查看次数

Python:给定时区名称的所有可能的时区缩写(反之亦然)

使用pytz,我知道如何列出时区名称,但我想获得每个时区名称的所有可能的时区缩写

import pytz
list(pytz.common_timezones)
['Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa',...]
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是任何时区缩写,例如PSTPDT,忽略当前日期时间(例如现在),返回所有可能的时区名称,在这种情况下是一个包​​含America/Los_Angeles的列表。

谢谢

python timezone datetime pytz

5
推荐指数
3
解决办法
9889
查看次数

pytest:如何在单元测试期间强制引发异常?

在我的python代码中,我期望在调用method之后可能引发异常requests.Session.request(),例如:

  • requests.exceptions.ConnectTimeout
  • requests.exceptions.ReadTimeout
  • requests.exceptions.Timeout

当这些预期异常中的任何一个出现时,我都会适当地处理它们,例如可能重试。

我的问题是,我正在py.test用于单元测试,我故意要注入我代码中特定部分的引发异常。例如,调用requests.Session.request()而不是返回有效值的函数requests.Response将引发一个requests.exception

我要确保我的代码成功处理来自其他程序包的预期和意外异常,其中包括来自的异常requests

也许... @decorator我可以添加到上述功能中,以在单元测试期间根据要求引发异常吗?

有关为单元测试进行异常注入的建议?(对我的问题的正确措词将不胜感激。)

感谢您的答复!!!

这是创建requests.Session和调用的整个单例类requests.Session.request()

class MyRequest(metaclass=Singleton):

    def __init__(self, retry_tries=3, retry_backoff=0.1, retry_codes=None):
        self.session = requests.session()

        if retry_codes is None:
            retry_codes = set(REQUEST_RETRY_HTTP_STATUS_CODES)

        self.session.mount(
            'http',
            HTTPAdapter(
                max_retries=Retry(
                    total=retry_tries,
                    backoff_factor=retry_backoff,
                    status_forcelist=retry_codes,
                ),
            ),
        )

    def request(self, request_method, request_url, **kwargs):
        try:
            return self.session.request(method=request_method, url=request_url, **kwargs)
        except Exception as ex:
            log.warning(
                "Session Request: Failed: {}".format(get_exception_message(ex)),
                extra={
                    'request_method': request_method,
                    'request_url': request_url …
Run Code Online (Sandbox Code Playgroud)

python unit-testing exception pytest python-requests

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

Python 3:gzip.open()和模式

https://docs.python.org/3/library/gzip.html

我正在考虑使用gzip.open(),我对这个mode论点有点困惑:

模式参数可以是二进制模式的'r','rb','a','ab','w','wb','x'或'xb'中的任何一个,或'rt','at' ,'wt'或'xt'用于文本模式.默认值为'rb'.

那么'w'和之间的区别是什么'wb'

该文件表明它们都是二进制模式.

那么这是否意味着'w'和之间没有区别'wb'

python gzip mode python-3.x

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