- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用用 Python 实现的工具 nrfutil
。为了能够在 NixOS 下使用它,我使用了一个 default.nix
文件,该文件将 nrfutil 安装到 venv 中。这在一段时间以来效果非常好。 (在 alpine 容器中使用 Nix 在构建服务器上进行的最后一次构建可以成功构建我 11 天前正在开发的软件。)当我执行完全相同的操作(即重新启动 CI 服务器构建而不进行更改)时,构建失败现在提示 pip
不正确:
$ nix-shell
New python executable in /home/matthias/source/tbconnect/bootloader/.venv/bin/python2.7
Not overwriting existing python script /home/matthias/source/tbconnect/bootloader/.venv/bin/python (you must use /home/matthias/source/tbconnect/bootloader/.venv/bin/python2.7)
Installing pip, wheel...
done.
Traceback (most recent call last):
File "/home/matthias/source/tbconnect/bootloader/.venv/bin/pip", line 6, in <module>
from pip._internal.main import main
ImportError: No module named main
对我来说,模块 main
应该存在:
$ ls -l .venv/lib/python2.7/site-packages/pip/_internal/main.py
-rw-r--r-- 1 matthias matthias 1359 10月 15 12:27 .venv/lib/python2.7/site-packages/pip/_internal/main.py
我对Python环境不太了解,所以我不知道更多。有人指 pip 我在哪里继续调试吗? Python 如何解析模块?为什么它找不到我看来存在的模块?
这是我用来安装 pip
的 default.nix
:
with import <nixpkgs> {};
with pkgs.python27Packages;
stdenv.mkDerivation {
name = "impurePythonEnv";
buildInputs = [
automake
autoconf
gcc-arm-embedded-7
# these packages are required for virtualenv and pip to work:
#
python27Full
python27Packages.virtualenv
python27Packages.pip
# the following packages are related to the dependencies of your python
# project.
# In this particular example the python modules listed in the
# requirements.txt require the following packages to be installed locally
# in order to compile any binary extensions they may require.
#
taglib
openssl
git
stdenv
zlib ];
src = null;
shellHook = ''
# set SOURCE_DATE_EPOCH so that we can use python wheels
SOURCE_DATE_EPOCH=$(date +%s)
virtualenv --no-setuptools .venv
export PATH=$PWD/.venv/bin:$PATH
#pip install nrfutil
pip help
# the following is required to build micro_ecc_lib_nrf52.a in the SDK
export GNU_INSTALL_ROOT="${gcc-arm-embedded-7}/bin/"
unset CC
'';
}
pip install nrfutil
替换为 pip help
,以确保问题不是我尝试安装的软件包本身造成的。nrfutil
仍然不适合 Python 3。python37
替换 python27
并没有改变我在尝试启动 pip
时遇到的错误。)nixos/nix:latest
,它是 Alpine Linux 上的 nix 包管理器。更新:
实际上,当我用 python2.7 -m pip install nrfutil
替换对 pip install nrfutil
的调用时,它就可以工作了。这实际上让我更加困惑。 python2.7 正是 pip shebang 中的二进制文件:
[nix-shell:~/source/tbconnect/bootloader]$ type python2.7
python2.7 is /home/matthias/source/tbconnect/bootloader/.venv/bin/python2.7
[nix-shell:~/source/tbconnect/bootloader]$ type pip
pip is /home/matthias/source/tbconnect/bootloader/.venv/bin/pip
[nix-shell:~/source/tbconnect/bootloader]$ head --lines 2 .venv/bin/pip
#!/home/matthias/source/tbconnect/bootloader/.venv/bin/python2.7
# -*- coding: utf-8 -*-
更新 2:我发现解决问题的另一种方法是编辑 .venv/bin/pip
。该脚本尝试了以下导入:
from pip._internal.main import main
我认为这是从 pip 19.3 开始的新模块路径。但我还有 pip 19.2。当我将此行更改为:
from pip._internal import main
通过输入 pip
运行 pip
可以正常工作。
问题是我不知道为什么pip
脚本试图加载新的模块路径,而NixOS仍然有旧版本的pip
。
我还在 GitHub 上提出了 NixOS 的问题:https://github.com/NixOS/nixpkgs/issues/71178
最佳答案
我通过删除 Python27Packages.pip
让你的 shell 派生工作,
(nix-shell) 2d [azul:/tmp/lixo12333] $
>>> pip list
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Package Version
---------------- -------
behave 1.2.6
Click 7.0
crcmod 1.7
ecdsa 0.13.3
enum34 1.1.6
future 0.18.2
intelhex 2.2.1
ipaddress 1.0.23
libusb1 1.7.1
linecache2 1.0.0
nrfutil 5.2.0
parse 1.12.1
parse-type 0.5.2
pc-ble-driver-py 0.11.4
piccata 1.0.1
pip 19.3.1
protobuf 3.10.0
pyserial 3.4
pyspinel 1.0.0a3
PyYAML 4.2b4
setuptools 41.6.0
six 1.12.0
tqdm 4.37.0
traceback2 1.4.0
virtualenv 16.4.3
wheel 0.33.6
wrapt 1.11.2
(nix-shell) 2d [azul:/tmp/lixo12333] $
和我的default.nix
with import <nixpkgs> {};
with pkgs.python27Packages;
stdenv.mkDerivation {
name = "impurePythonEnv";
buildInputs = [
automake
autoconf
gcc-arm-embedded-7
# these packages are required for virtualenv and pip to work:
#
python27Full
python27Packages.virtualenv
# the following packages are related to the dependencies of your python
# project.
# In this particular example the python modules listed in the
# requirements.txt require the following packages to be installed locally
# in order to compile any binary extensions they may require.
#
taglib
openssl
git
stdenv
zlib ];
src = null;
shellHook = ''
# set SOURCE_DATE_EPOCH so that we can use python wheels
SOURCE_DATE_EPOCH=$(date +%s)
virtualenv .venv
export PATH=$PWD/.venv/bin:$PATH
pip install nrfutil
#pip help
# the following is required to build micro_ecc_lib_nrf52.a in the SDK
export GNU_INSTALL_ROOT="${gcc-arm-embedded-7}/bin/"
unset CC
'';
}
关于python - nrfutil - Nixos 上的 "ImportError: No module named main",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58392710/
如何根据可用性使用有时像这样导入的不同模块运行相同的测试: try: from gevent.local import local except ImportError
我在使用 Nose 运行我的单元测试时遇到了一个ImportError,而当我单独运行它时却没有。此处提及的所有文件均可在 http://gist.github.com/395541# 中查看. 如果
当我在一个Python程序中导入熊猫时,我收到以下错误。这里也是程序:
我想下载Spacy,但终端的打字扩展版本降低了:。接下来,我想安装语言包python-m spacy Download en,但出现另一个错误:。我当前的python版本是3.7,我应该更新它吗?或者
我想下载Spacy,但终端的打字扩展版本降低了:。接下来,我想安装语言包python-m spacy Download en,但出现另一个错误:。我当前的python版本是3.7,我应该更新它吗?或者
Traceback (most recent call last): File "c:\users\sathish.pv\appdata\local\continuum\anaconda3\lib
我已经编写了一个名为coinview.py的脚本,它可以在Linux上运行。当我尝试以SYSTEM D身份运行它时,出现错误。错误:ImportError:没有名为‘Schedule’的模块。。我用的
这是我的错误信息 Traceback (most recent call last): File "app.py", line 9, in from forms import Conta
我正在使用 Mac OS x 10.10.3 Yosemite 和 Python 2.7.9 |Anaconda 2.2.0 (x86_64) 来处理很多 python 的东西。我正在使用 Eclip
我是 Django 新手,正在创建我的第一个项目。一切正常,突然出现 ImportError('win32 only') ImportError: win32.在网上搜索了很多,但没有找到解决方案。
回复 a similar question建议我不能以独立模式导入 Shell 的东西。但是,据我了解,St 是一个用 C 编写的单独库。但我仍然无法在 gjs 中导入它...... IE。 $ gj
好吧,我被这个难住了。我环顾四周,但找不到任何东西,也不知道如何调试它。基本上,python 在我未导入任何内容的代码行中抛出一个 ImportError。我有一个相当大的模块 ICgen,其中包含模
我正在调用 psycopg2 import psycopg2 我得到标准错误 ImportError: No module named psycopg2 我用 macports 安装了我的副本,所以我
我已经使用 brew 安装了 opencv3,但是在执行 import cv2 时遇到了 importError >>> import cv2 Traceback (most recent call
安装numpy表示已经是最新版本,出现在pip list返回的列表中也是,但是导入它会产生导入错误(并且这个问题对于每个其他已安装的模块都存在,例如 scipy、matplotlib)。 系统有什么问
我有一个 python 脚本,运行时会产生以下错误: import urllib2 File "C:\Python27\lib\urllib2.py", line 94, in import htt
我正在尝试运行 this tutorial在合作实验室。 但是,当我尝试导入一堆模块时: import io import torch from torchtext.utils import down
我在这里遇到了一个特别棘手的问题。 我目前正在做一个个人项目,从一个相对简单的 Riot API 包装器开始,一切都运行良好,直到我想打包它并组织模块。这是该项目的链接:Logistic Analys
我已经通过easy_install.py --upgrade google-api-python-client安装了适用于Python的Google API客户端库。当我运行包含from oauth2
我正在使用 Django,并且我的组应用程序不断收到此错误,我检查了所有导入设置,一切都很好。我的注册和个人资料应用程序运行顺利,但为什么这个应用程序给我一个 ImportError 模型? Trac
我是一名优秀的程序员,十分优秀!