Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python TypeError:必须是不带空字节的编码字符串,而不是str-docker iron requirements.txt_Python_Docker_Pip_Iron.io - Fatal编程技术网

python TypeError:必须是不带空字节的编码字符串,而不是str-docker iron requirements.txt

python TypeError:必须是不带空字节的编码字符串,而不是str-docker iron requirements.txt,python,docker,pip,iron.io,Python,Docker,Pip,Iron.io,我一直在尝试将python脚本部署到Iron.io。他们建议在上传之前使用docker进行本地测试 我已经完成了,没有错误 所以我开始修改他们的示例repo来启动我自己的项目,但是每当我尝试在本地安装包时,我都会收到一个TypeError 我的pip版本是: pip 7.1.2 from /Library/Python/2.7/site-packages (python 2.7) 他们的要求.txt iron-mq>=0.5 iron-worker>=1.3.1 iron-mq&

我一直在尝试将python脚本部署到Iron.io。他们建议在上传之前使用docker进行本地测试

我已经完成了,没有错误

所以我开始修改他们的示例repo来启动我自己的项目,但是每当我尝试在本地安装包时,我都会收到一个TypeError

我的pip版本是:

pip 7.1.2 from /Library/Python/2.7/site-packages (python 2.7)
他们的要求.txt

iron-mq>=0.5
iron-worker>=1.3.1
iron-mq>=0.5
iron-worker>=1.3.1
beautifulsoup4
html5lib
我的要求.txt

iron-mq>=0.5
iron-worker>=1.3.1
iron-mq>=0.5
iron-worker>=1.3.1
beautifulsoup4
html5lib
终端命令:

$ docker run --rm -v "$PWD":/worker -w /worker iron/python:2-dev pip install -t packages -r requirements.txt
错误:

Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/pip/basecommand.py", line 211, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/site-packages/pip/commands/install.py", line 282, in run
    wheel_cache
 File "/usr/lib/python2.7/site-packages/pip/basecommand.py", line 291, in populate_requirement_set
    wheel_cache=wheel_cache):
 File "/usr/lib/python2.7/site-packages/pip/req/req_file.py", line 89, in parse_requirements
    for req in req_iter:
 File "/usr/lib/python2.7/site-packages/pip/req/req_file.py", line 137, in process_line
    isolated=isolated, options=req_options, wheel_cache=wheel_cache
 File "/usr/lib/python2.7/site-packages/pip/req/req_install.py", line 168, in from_line
    if (os.path.isdir(p) and
 File "/usr/lib/python2.7/genericpath.py", line 49, in isdir
    st = os.stat(s)
 TypeError: must be encoded string without NULL bytes, not str
我在OSX上使用升华,并使用UTF-8编码。有关此错误的其他线程通常通过转义某些字符或更改编码来解决。但我找不到替代编码来使用

在没有任何空字节的情况下保存需求有什么诀窍吗?还是有其他已知的修复方法

编辑更新:

使用-vvv max verbose模式运行pip

docker run --rm -v "$PWD":/worker -w /worker iron/python:2-dev pip install -vvv -t packages -r requirements.txt
返回

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/pip/basecommand.py", line 211, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/site-packages/pip/commands/install.py", line 282, in run
    wheel_cache
  File "/usr/lib/python2.7/site-packages/pip/basecommand.py", line 291, in populate_requirement_set
    wheel_cache=wheel_cache):
  File "/usr/lib/python2.7/site-packages/pip/req/req_file.py", line 89, in parse_requirements
    for req in req_iter:
  File "/usr/lib/python2.7/site-packages/pip/req/req_file.py", line 137, in process_line
isolated=isolated, options=req_options, wheel_cache=wheel_cache
  File "/usr/lib/python2.7/site-packages/pip/req/req_install.py", line 168, in from_line
    if (os.path.isdir(p) and
  File "/usr/lib/python2.7/genericpath.py", line 49, in isdir
    st = os.stat(s)
TypeError: must be encoded string without NULL bytes, not str
Starting new HTTPS connection (1): pypi.python.org
"GET /pypi/pip/json HTTP/1.1" 200 50975
唯一的新输出是底部的两行

运行iconv来识别任何恶意字符只会返回txt文件的内容

iconv -t UTF-8 requirements.txt

iron-mq>=0.5
iron-worker>=1.3.1
beautifulsoup4==4.4.1

我在Mac电脑上用Iron docker图像运行
pip安装时遇到了同样的问题。在尝试了一系列方法来解决这个问题后,我将问题追溯到Docker Toolbox和vboxfs。他们没有正确同步主机文件系统更改。为了修复它,我在docker toolbox VM中运行了:

sync;echo 3>/proc/sys/vm/drop\u缓存

sync
调用将所有挂起的写入同步到磁盘。第二个命令告诉内核清除文件系统缓存


一旦我这样做了,我的
pip安装
工作正常。

在Windows和Mac操作系统上,Docker守护进程在虚拟机上运行

尝试进入虚拟机并在那里运行Docker命令。解决此问题的一个可能方法是避免在主机上运行Docker命令


作为提醒,Iron.io的支持可通过电话、电子邮件或其他问题获得。

您使用的是哪一版本的pip?您是否尝试升级到最新版本?另外,可以在启用最大详细度的情况下尝试install命令吗?(
pip安装-vvv…
)听起来您的需求文件中确实有一些流氓特殊字符-请参阅关于这个类似问题的评论@therefromhere pip版本和原始帖子中添加的其他输出。