Install jupyterlab in pip3 throws 'TypeError: expected string or bytes-like object'
Install jupyterlab in pip3 throws 'TypeError: expected string or bytes-like object'
背景
我试图使用 pip3 install jupyterlab
安装 Jupyter Lab,但它抛出了同样的错误。
我没弄明白。使用 pip2 install jupyterlab
找到了解决方法——它有效,但显然是创可贴修复。
在 python3 notebook 中尝试了 运行 import pandas as pd
(在 jupyter 实验室内);找不到模块。
我在 PC 上使用 Cygwin 作为我的 linux 模拟器。
我更喜欢 python3.x 而不是 python 2.7.
我尝试解决问题
类似报道的 JupyterLab post - 我在这里找到了这个 post:Import pandas on jupyter ipython notebook fails,但我相信作者正在使用 anaconda(我不是)并且类型错误不同。
我发现了一个与我的 TypeError 相关的 post,但那是他正在编写的代码:Getting a TypeError: expected string or bytes-like object.
我很难解释 Traceback,但它在下面:
$ pip install --upgrade pip
Exception:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/pip/basecommand.py", line 215, in main
status = self.run(options, args)
File "/usr/lib/python3.6/site-packages/pip/commands/install.py", line 335, in run
wb.build(autobuilding=True)
File "/usr/lib/python3.6/site-packages/pip/wheel.py", line 749, in build
self.requirement_set.prepare_files(self.finder)
File "/usr/lib/python3.6/site-packages/pip/req/req_set.py", line 380, in prepare_files
ignore_dependencies=self.ignore_dependencies))
File "/usr/lib/python3.6/site-packages/pip/req/req_set.py", line 487, in _prepare_file
req_to_install, finder)
File "/usr/lib/python3.6/site-packages/pip/req/req_set.py", line 428, in _check_skip_installed
req_to_install, upgrade_allowed)
File "/usr/lib/python3.6/site-packages/pip/index.py", line 465, in find_requirement
all_candidates = self.find_all_candidates(req.name)
File "/usr/lib/python3.6/site-packages/pip/index.py", line 427, in find_all_candidates
self._package_versions(page.links, search)
File "/usr/lib/python3.6/site-packages/pip/index.py", line 595, in _package_versions
v = self._link_package_versions(link, search)
File "/usr/lib/python3.6/site-packages/pip/index.py", line 667, in _link_package_versions
support_this_python = check_requires_python(link.requires_python)
File "/usr/lib/python3.6/site-packages/pip/utils/packaging.py", line 34, in check_requires_python
return python_version in requires_python_specifier
File "/usr/lib/python3.6/site-packages/packaging/specifiers.py", line 698, in __contains__
return self.contains(item)
File "/usr/lib/python3.6/site-packages/packaging/specifiers.py", line 703, in contains
item = parse(item)
File "/usr/lib/python3.6/site-packages/packaging/version.py", line 31, in parse
return Version(version)
File "/usr/lib/python3.6/site-packages/packaging/version.py", line 200, in __init__
match = self._regex.search(version)
TypeError: expected string or bytes-like object
为什么返回的版本不是字符串或字节?我的 python 3.6 包本身有错误吗?我正在考虑在回溯中打开这些文件以查看是否可以调试它,但我认为我应该在尝试听起来有点荒谬的事情之前寻求帮助,imo。
我尝试过的其他东西
pip2 install --upgrade pip
- returns 一条消息说 python2.7 中的 pip 是最新的。
追溯(pip2):
$ pip2 install --upgrade pip
Requirement already up-to-date: pip in /usr/lib/python2.7/site-packages
pip3 install --upgrade pip
- 这个 returns 上面的类型错误
回溯(pip3):查看第一个回溯
pip 版本和 python 站点输出
$ pip2 --version
pip 9.0.1 from /usr/lib/python2.7/site-packages (python 2.7)
$ python -m site
sys.path = [
'/home/jennings/Documents/hpv/hpv_missed_clinics',
'/usr/lib/python2.7/site-packages/logilab_common-1.3.0-py2.7.egg',
'/usr/lib/python2.7/site-packages/six-1.9.0-py2.7.egg',
'/usr/lib/python27.zip',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-cygwin',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/lib/python2.7/site-packages',
'/usr/lib/python2.7/site-packages/gtk-2.0',
'/usr/lib/python2.7/site-packages/wx-3.0-gtk3',
]
USER_BASE: '/home/jennings/.local' (exists)
USER_SITE: '/home/jennings/.local/lib/python2.7/site-packages' (doesn't exist)
ENABLE_USER_SITE: True
$ pip --version
pip 9.0.1 from /usr/lib/python3.6/site-packages (python 3.6)
$ python3 -m site
sys.path = [
'/home/jennings/Documents/hpv/hpv_missed_clinics',
'/usr/lib/python36.zip',
'/usr/lib/python3.6',
'/usr/lib/python3.6/lib-dynload',
'/usr/lib/python3.6/site-packages',
'/home/jennings/Documents/kaggle/SQL_scavenger/src/bq-helper',
'/usr/lib/python3.6/site-packages/linkgrammar',
]
USER_BASE: '/home/jennings/.local' (exists)
USER_SITE: '/home/jennings/.local/lib/python3.6/site-packages' (doesn't exist)
ENABLE_USER_SITE: True
真正的解决方法是硬着头皮使用虚拟环境来确保包正常工作,无论是使用 Anaconda 还是直接通过命令行。
我当时在 c运行ch,下面 Wʜᴀᴄᴋᴀᴍᴀᴅᴏᴏᴅʟᴇ3000 的回答给了我创可贴来完成我需要做的事情。我将把它留在这里以供存档。
Per ᴡʜᴀᴄᴋᴀᴍᴀᴅᴏᴏᴅʟᴇ3000条评论中的回答,已删除,已修复。如果您是 ᴡʜᴀᴄᴋᴀᴍᴀᴅᴏᴏᴅʟᴇ3000,请随时发表评论,我可以将其标记为 'accepted answer.' 根据 Greg Schmit 的建议,我也将答案移至此部分。我是 stackexchange 的新手,所以如果您知道如何联系 ᴡʜᴀᴄᴋᴀᴍᴀᴅᴏᴏᴅʟᴇ3000,请帮忙。这是目前的答案,除非有人可以提供更多见解。不确定这种并发症是否与 cygwin 相关。
打开文件“/usr/lib/python3.6/site-packages/packaging/version.py”
将第 200 行的代码从 match = self._regex.search(version)
更改为 match = self._regex.search(str(version))
重新运行代码pip3 install jupyterlab
现在,当我 运行 import pandas as pd
时,python3 pandas 模块在 jupyterlab 中被识别
我对现有 *.egg-info
文件有一些问题,删除那些允许 pip 再次工作的文件
添加 sudo 对我有用:
sudo pip3 install jupyterlab
背景
我试图使用
pip3 install jupyterlab
安装 Jupyter Lab,但它抛出了同样的错误。我没弄明白。使用
pip2 install jupyterlab
找到了解决方法——它有效,但显然是创可贴修复。在 python3 notebook 中尝试了 运行
import pandas as pd
(在 jupyter 实验室内);找不到模块。我在 PC 上使用 Cygwin 作为我的 linux 模拟器。
我更喜欢 python3.x 而不是 python 2.7.
我尝试解决问题
类似报道的 JupyterLab post - 我在这里找到了这个 post:Import pandas on jupyter ipython notebook fails,但我相信作者正在使用 anaconda(我不是)并且类型错误不同。
我发现了一个与我的 TypeError 相关的 post,但那是他正在编写的代码:Getting a TypeError: expected string or bytes-like object.
我很难解释 Traceback,但它在下面:
$ pip install --upgrade pip
Exception:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/pip/basecommand.py", line 215, in main
status = self.run(options, args)
File "/usr/lib/python3.6/site-packages/pip/commands/install.py", line 335, in run
wb.build(autobuilding=True)
File "/usr/lib/python3.6/site-packages/pip/wheel.py", line 749, in build
self.requirement_set.prepare_files(self.finder)
File "/usr/lib/python3.6/site-packages/pip/req/req_set.py", line 380, in prepare_files
ignore_dependencies=self.ignore_dependencies))
File "/usr/lib/python3.6/site-packages/pip/req/req_set.py", line 487, in _prepare_file
req_to_install, finder)
File "/usr/lib/python3.6/site-packages/pip/req/req_set.py", line 428, in _check_skip_installed
req_to_install, upgrade_allowed)
File "/usr/lib/python3.6/site-packages/pip/index.py", line 465, in find_requirement
all_candidates = self.find_all_candidates(req.name)
File "/usr/lib/python3.6/site-packages/pip/index.py", line 427, in find_all_candidates
self._package_versions(page.links, search)
File "/usr/lib/python3.6/site-packages/pip/index.py", line 595, in _package_versions
v = self._link_package_versions(link, search)
File "/usr/lib/python3.6/site-packages/pip/index.py", line 667, in _link_package_versions
support_this_python = check_requires_python(link.requires_python)
File "/usr/lib/python3.6/site-packages/pip/utils/packaging.py", line 34, in check_requires_python
return python_version in requires_python_specifier
File "/usr/lib/python3.6/site-packages/packaging/specifiers.py", line 698, in __contains__
return self.contains(item)
File "/usr/lib/python3.6/site-packages/packaging/specifiers.py", line 703, in contains
item = parse(item)
File "/usr/lib/python3.6/site-packages/packaging/version.py", line 31, in parse
return Version(version)
File "/usr/lib/python3.6/site-packages/packaging/version.py", line 200, in __init__
match = self._regex.search(version)
TypeError: expected string or bytes-like object
为什么返回的版本不是字符串或字节?我的 python 3.6 包本身有错误吗?我正在考虑在回溯中打开这些文件以查看是否可以调试它,但我认为我应该在尝试听起来有点荒谬的事情之前寻求帮助,imo。
我尝试过的其他东西
pip2 install --upgrade pip
- returns 一条消息说 python2.7 中的 pip 是最新的。
追溯(pip2):
$ pip2 install --upgrade pip
Requirement already up-to-date: pip in /usr/lib/python2.7/site-packages
pip3 install --upgrade pip
- 这个 returns 上面的类型错误
回溯(pip3):查看第一个回溯
pip 版本和 python 站点输出
$ pip2 --version
pip 9.0.1 from /usr/lib/python2.7/site-packages (python 2.7)
$ python -m site
sys.path = [
'/home/jennings/Documents/hpv/hpv_missed_clinics',
'/usr/lib/python2.7/site-packages/logilab_common-1.3.0-py2.7.egg',
'/usr/lib/python2.7/site-packages/six-1.9.0-py2.7.egg',
'/usr/lib/python27.zip',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-cygwin',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/lib/python2.7/site-packages',
'/usr/lib/python2.7/site-packages/gtk-2.0',
'/usr/lib/python2.7/site-packages/wx-3.0-gtk3',
]
USER_BASE: '/home/jennings/.local' (exists)
USER_SITE: '/home/jennings/.local/lib/python2.7/site-packages' (doesn't exist)
ENABLE_USER_SITE: True
$ pip --version
pip 9.0.1 from /usr/lib/python3.6/site-packages (python 3.6)
$ python3 -m site
sys.path = [
'/home/jennings/Documents/hpv/hpv_missed_clinics',
'/usr/lib/python36.zip',
'/usr/lib/python3.6',
'/usr/lib/python3.6/lib-dynload',
'/usr/lib/python3.6/site-packages',
'/home/jennings/Documents/kaggle/SQL_scavenger/src/bq-helper',
'/usr/lib/python3.6/site-packages/linkgrammar',
]
USER_BASE: '/home/jennings/.local' (exists)
USER_SITE: '/home/jennings/.local/lib/python3.6/site-packages' (doesn't exist)
ENABLE_USER_SITE: True
真正的解决方法是硬着头皮使用虚拟环境来确保包正常工作,无论是使用 Anaconda 还是直接通过命令行。
我当时在 c运行ch,下面 Wʜᴀᴄᴋᴀᴍᴀᴅᴏᴏᴅʟᴇ3000 的回答给了我创可贴来完成我需要做的事情。我将把它留在这里以供存档。
Per ᴡʜᴀᴄᴋᴀᴍᴀᴅᴏᴏᴅʟᴇ3000条评论中的回答,已删除,已修复。如果您是 ᴡʜᴀᴄᴋᴀᴍᴀᴅᴏᴏᴅʟᴇ3000,请随时发表评论,我可以将其标记为 'accepted answer.' 根据 Greg Schmit 的建议,我也将答案移至此部分。我是 stackexchange 的新手,所以如果您知道如何联系 ᴡʜᴀᴄᴋᴀᴍᴀᴅᴏᴏᴅʟᴇ3000,请帮忙。这是目前的答案,除非有人可以提供更多见解。不确定这种并发症是否与 cygwin 相关。
打开文件“/usr/lib/python3.6/site-packages/packaging/version.py”
将第 200 行的代码从
match = self._regex.search(version)
更改为match = self._regex.search(str(version))
重新运行代码
pip3 install jupyterlab
现在,当我 运行 import pandas as pd
我对现有 *.egg-info
文件有一些问题,删除那些允许 pip 再次工作的文件
添加 sudo 对我有用:
sudo pip3 install jupyterlab