问题标签 [six]

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 投票
1 回答
443 浏览

python - travis-ci 在 Python3.4 上构建 6 个 urllib 不会安装

我有一个具有 Python 3.4 依赖项(外部命令)的 go 项目。我有一组称为reqs.txt. 我使用 virtualenv 来确保我在自己的 venv 中,所以我可以安装我的依赖项。

我收到以下错误(下面的完整日志):

这是令人沮丧的,因为就在这一行之前,有一个six软件包的安装。

我的 .travis.yml 文件

特拉维斯日志

0 投票
1 回答
217 浏览

python - AttributeError:使用自定义 python 插件编译 protobuf 时缺少六个“indexbytes”

使用自定义 python 插件编译 protobuf 文件时遇到问题。在一台机器上,它按预期运行,而在另一台机器上,这会导致以下错误:

两台机器都有相同的 Python 版本:2.7.12。

我还确保它们具有相同的 Protobuf 模块版本 (3.2.0) 和六个模块版本 (1.10.0)。

所以我不明白为什么“六”模块会错过上面调用堆栈中提到的“decoder.py”中所需的“indexbytes”方法。

0 投票
2 回答
1404 浏览

python - 无法在 ipython 中导入 Tensorflow

我的 macbook pro Yosemite 上有 tensorflow 版本 1.0.0 非 GPU 版本。它安装在 virtualenv 中,我有 python 2.7。我有六个版本 1.4.1。当我python在命令行上执行并导入六个时,它工作正常。但是当我输入 'ipython' 并导入 tensorflow 时,我看到了这个错误:

我尝试升级六,但我仍然看到版本 1.4.1。六是这里的问题吗?如果不是,那是什么?

0 投票
1 回答
1578 浏览

python - 哇, Six.with_metaclass() 有效吗?

嗨 Stackoverflow 社区

我一直试图了解 Django(和 Wagtail 的 Stream-field)如何在幕后工作。这样做我了解了元类,并相信掌握了这一原则。也就是说,SIX 如何执行 with_metaclass 函数对我来说仍然有点模糊。这是代码,后面是一个特定的问题:

模型.py

wagtailcore > fields.py

wagtailcore > 块 > stream_block.py

六.py

问题

(1) 描述建议我们生成一个临时的虚拟元类,用实际的元类替换自己。(2) 这是如何工作的?(3) 我们如何通过 with_metaclass 函数对元类生成进行排序?(4) BaseStreamBlock 是从哪里来的?

让我困惑的部分是我们定义

但只能通过以下方式调用它:

在 [2] 中,我们实例化了在 [1] 中定义的类元类。此类的实例包含 DeclarativeSubBlockMetaclass 作为类型,并包含“temporary_class”作为名称,没有基础或属性。

在 [1] 中,我们定义了看起来正在执行实际元类工作的元类类在这里,我们开发了一个类生成器,它根据基数和名称生成 DeclarativeSubBlockMetaclass 类型的类(作为元传递)。

但是,由于对 [1] 的唯一调用来自 [2],因此我们似乎正在做的只是实例化没有任何基础或属性的DeclarativeSubBlockMetaclass类型的“temporary_class”。

我们如何用描述(1)中描述的实际元类替换这个临时虚拟元类?

我试图为此查阅六人的文档,但找不到任何可以解决我困惑的东西。

任何建议将不胜感激。

非常感谢Z

仅用于上下文:

我在上面的 Six.with_metaclass 调用中包含了两个类的代码:

声明性子块元类

基本流块

0 投票
0 回答
965 浏览

python - 无法安装python六模块

我在 AWS 云中有一台服务器。它正在运行一个可以很好地调用 Google STT API 的烧瓶 API。然后,我尝试通过设置 virtualenv 并让 API 在那里运行来“生产”API,以运行 Gunicorn。

当我尝试在虚拟容器中运行 API 时,它给出了关于导入 google api 客户端的错误。我的 virtualenv 中没有 google api 客户端文件夹,所以我从主要的 python2.7 站点包文件夹中复制了文件夹。然后我收到一个错误,说它无法在 googleapiclient/discovery.py 中导入六个。错误是“ImportError:没有名为 6 的模块”。

我的 virtualenv python 文件夹中没有六个目录。所以我试图从我的主要 python2.7 文件夹中复制一个名为 6-1.10.0.dist-info 的文件夹,但这没有帮助。我尝试了很多事情......例如强制重新安装,但仍然与来自 googleapiclient/discovery.py 的 google api 参考相同的错误。所以我尝试了“sudo pip 卸载六;sudo pip 安装六”。这已成功卸载,但现在我无法再次安装。当我运行“sudo pip install 6”时,我得到以下信息:

我也尝试过 easy_install 和 --upgrade --ignore-installed 等选项,但行为没有改变。

到底他妈发生了什么?为什么我不能重装六个?为什么它无论如何都不会被识别?


更新所以这篇文章 stackoverflow.com/questions/13270877/... 帮助我将六个安装回主 python 环境。我的 API 现在在那里运行良好。但同样的方法对虚拟环境不起作用。

运行“unset PYTHONPATH”似乎帮助我将模块安装到 virtualenv 中。AWS 映像似乎已经添加了一个混淆 virtualenv 的 python 路径。但是,我仍然在下面用六个胡说八道。到底是怎么回事?

0 投票
1 回答
56 浏览

python - 为不同版本的 Python 创建 pip 包

我有一大块用 Python 2.7 编写的代码。我的最终目标是在 Python 2 和 3 中都有工作版本,它们都可以通过 pip 安装并在 GitHub 上可用。这方面的标准做法是什么?

我所做的一切mypackage

  1. 运行2to3包,它给了我两个不同版本的代码(Python 2.7 和 3.4)
  2. 接受将新功能添加到 3.4 而不是 2.7 的约定,尽管错误修复将被推送到 2.7
  3. setup.py为两者创建脚本
  4. mypackage使用 Python 3.4 = 1.0 版和 Python 2.7 = mypackage0.9版上传到 pip 。
  5. 将 3.4 版本上传到 GitHub,但添加了一个文件夹python27,其中包含 Python 2.7 代码

所以现在你可以pip分别安装 3.4 和 2.7 版本了

这一切似乎令人费解。问题:

  • 执行此操作的标准方法是什么?
  • 我真的需要两个不同版本的代码吗?six几年后,由于依赖原因,我有点犹豫要不要使用。
  • pip 是否足够聪明,可以根据它所绑定的 Python 版本下载正确的 Python 版本?
  • 在 GitHub 上如何处理这个问题?代码的两个版本使这变得困难。
0 投票
1 回答
2602 浏览

python - 使用 urlopen 在 FTP 服务器上获取文件的最后修改日期不起作用

以下如何使用 python3 urllib 获取最后修改时间?我想获取 FTP 服务器上文件的最后修改日期。但是,使用上面的代码,last-modifiedNone. 有什么建议么?我希望解决方案同时适用于 python 2 和 python 3

0 投票
1 回答
723 浏览

python - 使用 urlretrieve 后关闭 ftp 连接

像这样使用 urlretrieve 后是否需要关闭 ftp 连接?如果是,那么如何?

0 投票
1 回答
573 浏览

python - Django 1.9.13 抱怨 SubfieldBase 已被弃用,但我没有使用它。如何解决?

我正在将一个旧的 Django 项目从 Django 1.8.3 升级到当前的 Django 1.11,但要小心,我正在升级到 Django 的每个主要版本,所以我可以在下一个之前找到错误和弃用并修复它们步。(我已经快两年没碰过这段代码了,所以我有点生疏;如果我犯了一个简单的错误,请原谅我。)

我第一次升级到 Django 1.9.13(1.10 之前的最后一个),当我manage.py runserver,我得到这个错误:

/Users/mboszko/.virtualenvs/opticaldev/lib/python2.7/site-packages/django/utils/six.py:808: RemovedInDjango110Warning: SubfieldBase 已被弃用。请改用 Field.from_db_value。

返回元(名称,基地,d)

如果我没看错,则该错误源于sixDjango 嵌入的自定义版本。我已经搜索了我的代码,但我似乎没有SubfieldBase在我自己的代码中使用任何地方。(我也用谷歌搜索了这个特殊的错误,但没有多大成功six。)

这只是我应该升级到 Django 1.10 的情况,并且该six包中的新版本将兼容,还是在升级之前我需要自己解决一些问题?

0 投票
1 回答
5495 浏览

python - 六:无法导入名称python_2_unicode_compatible

six 1.10.0Python 和 pip 2.6 下安装后,旧的 Django 1.0.4 应用程序无法导入python_2_unicode_compatible,即使它发现six1.10.0 就好了:

我已经在应用程序中使用 python 代码确认它确实可以访问six


我的任务是将运行 django 1.0.4(你没看错,1.0.4)和 django_cms 2.0.0 Alpha 的非常旧的站点移动到新服务器。旧服务器坏了,所以我只有备份很久以前安装的主要网站文件和依赖项。

我正在对它进行 Dockerizing 以帮助记录和在未来部署它。

我已经尝试过Apache mod_wsgigunicorn(已安装 pip2.6)并且当前正在使用uwsgi(首选,已安装 pip2.6)来加载应用程序。

Nginx正在另一个 Docker 容器中运行proxy_pass,并且将使用前端代理和 TLS。

uwsgi使用自定义启动站点wsgi

加载/索引页面后,我遇到了许多导入错误。慢慢地,我正在解决每一个问题(主要与 Django “MIDDLEWARE_CLASSES”有关,我还没有找到它们的定义)。

我目前陷入以下错误:

uwsgi 用指定的 python2.6 启动就好了:

另外,python2.7 最初是配置的并且有完全相同的错误。我想我读到了 python_2_unicode_compatible 在 2.7 或其他版本中被弃用的地方,所以我回到了网站运行的原始版本。


我需要安装virtualenv吗?我通常不会在 Docker 下这样做,而只是全局安装所有内容。我看不出这会有什么不同。

如果six没有找到,我会不会得到一个错误,它不能导入六个,而不是python_2_unicode_compatible