Ошибка установки python lru-dict [дубликат]

В качестве запрошенного вывода код выглядит следующим образом

    d = {'dict1': {'foo': 1, 'bar': 2}, 'dict2': {'baz': 3, 'quux': 4}}

    for k1,v1 in d.iteritems(): # the basic way
        temp = ""   
        temp+=k1
        for k2,v2 in v1.iteritems():
           temp = temp+" "+str(k2)+" "+str(v2)
        print temp

Вместо iteritems () вы также можете использовать элементы (), но iteritems () намного эффективнее и возвращает итератор .

Надеюсь, это поможет:)

777
задан Chris 3 February 2014 в 17:16
поделиться

25 ответов

Мне удалось решить эту проблему и сгенерировать файл .so в одной команде

gcc -shared -o UtilcS.so
-fPIC -I/usr/include/python2.7 -lpython2.7  utilsmodule.c
11
ответ дан Solomon Ucko 22 August 2018 в 11:52
поделиться

попробуйте apt-файл. Трудно запомнить имя пакета, в котором находится отсутствующий файл. Он является общим и полезным для любых файлов пакетов.

Например:

root@ubuntu234:~/auto# apt-file search --regexp '/Python.h$'
pypy-dev: /usr/lib/pypy/include/Python.h
python2.7-dbg: /usr/include/python2.7_d/Python.h
python2.7-dev: /usr/include/python2.7/Python.h
python3.2-dbg: /usr/include/python3.2dmu/Python.h
python3.2-dev: /usr/include/python3.2mu/Python.h
root@ubuntu234:~/auto# 

Теперь вы можете сделать экспертную догадку о том, какой из них выбрать.

9
ответ дан Aleksandr M 22 August 2018 в 11:52
поделиться

Эта ошибка возникла, когда я попытался установить ctds на CentOS 7 с Python3.6. Я сделал все трюки, упомянутые здесь, включая yum install python34-devel. Проблема была Python.h найдена в /usr/include/python3.4m but not in /usr/include/python3.6m. Я попытался использовать --global-option для указания на включение dir (pip3.6 install --global-option=build_ext --global-option="--include-dirs=/usr/include/python3.4m" ctds). Это привело к тому, что при связывании ctds не удалось найти lpython3.6m.

Наконец, что нужно было исправить, чтобы среда разработки для Python3.6 исправлялась с помощью include и libs.

yum -y install https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/python36u-libs-3.6.3-1.ius.centos7.x86_64.rpm

Python.h должен быть включен в ваш путь include для gcc. Какая бы версия python не использовалась, например, если она равна 3,6, то она должна быть в /usr/include/python3.6m/Python.h как правило.

4
ответ дан Babu Arunachalam 22 August 2018 в 11:52
поделиться
  • 1
    Не знаю, почему есть -1, но это проблема на сегодняшний день для python3.6 с CentOS, поскольку python36-devel недоступен. Вам нужно будет установить его по указанному выше URL-адресу. – Babu Arunachalam 16 November 2017 в 03:25

Я также столкнулся с этой ошибкой, когда устанавливал coolprop в ubuntu.

Для ubuntu 16.04 с python 3.6

sudo apt-get install python3.6-dev

Если это не работает, попробуйте установить / обновить gcc lib.

sudo apt-get install gcc
6
ответ дан bwaaaaaa 22 August 2018 в 11:52
поделиться

Если вы используете tox для запуска тестов на нескольких версиях Python, вам может потребоваться установить библиотеки разработчиков Python для каждой версии Python, на которую вы тестируете.

sudo apt-get install python2.6-dev 
sudo apt-get install python2.7-dev 
etc.
25
ответ дан Christian Long 22 August 2018 в 11:52
поделиться

Я хотел бы добавить также решение для Cygwin :

Вам нужно установить пакет python2-devel или python3-devel, в зависимости от версии Python, которую вы с помощью.

Вы можете быстро установить его с помощью 32-битного или 64-битного setup.exe (в зависимости от вашей установки) из Cygwin. com .

Пример (измените имя файла setup.exe и основную версию Python, если вам нужно):

$ setup.exe -q --packages=python3-devel

Вы также можете проверить мои другие answer еще несколько вариантов установки пакетов Cygwin из командной строки.

20
ответ дан Dawid Ferenczy 22 August 2018 в 11:52
поделиться

Похоже, что вы неправильно установили файлы заголовков и статические библиотеки для python dev. Используйте диспетчер пакетов, чтобы установить их в системном масштабе.

Для apt (Ubuntu, Debian ...):

sudo apt-get install python-dev   # for python2.x installs
sudo apt-get install python3-dev  # for python3.x installs

Для yum (CentOS, RHEL ...):

sudo yum install python-devel   # for python2.x installs
sudo yum install python34-devel   # for python3.4 installs

Для dnf (Fedora ...):

sudo dnf install python2-devel  # for python2.x installs
sudo dnf install python3-devel  # for python3.x installs

Для zypper (openSUSE ...):

sudo zypper in python-devel   # for python2.x installs
sudo zypper in python3-devel  # for python3.x installs

Для apk ( Alpine ...):

# This is a departure from the normal Alpine naming
# scheme, which uses py2- and py3- prefixes
sudo apk add python2-dev  # for python2.x installs
sudo apk add python3-dev  # for python3.x installs
1399
ответ дан detuur 22 August 2018 в 11:52
поделиться
  • 1
    Это сработало для меня. Ubuntu 14.04, Python 2.7, получил ошибку при установке psycopg2 и «sudo apt-get install python-dev & quot; разрешили ошибку. – Steve Saporta 18 July 2014 в 14:44
  • 2
    Работает на Raspbian – Thijs 25 October 2014 в 17:51
  • 3
    для opensuse, install & quot; python3-devel & quot; – kmonsoor 29 March 2015 в 08:17
  • 4
    для centos yum install python-devel – Kaushik 14 April 2015 в 13:41
  • 5
    Попробуйте locate Python.h и посмотрите, есть ли у вас файл, прежде чем делать все это. Если вы найдете найденный файл, в основном этот ответ будет работать: stackoverflow.com/a/19344978/4954434 (Это может быть просто проблема с пути) – Jithin Pavithran 25 January 2017 в 17:44
  • 6
  • 7

Он часто появляется, когда вы пытаетесь удалить python3.5 и установить python3.6.

Таким образом, при использовании python3 (который python3 -V => python3.6) для установки некоторых необходимых пакетов python3.5 появится эта ошибка.

Разрешить установкой модуля python3.6-dev.

2
ответ дан dphans 22 August 2018 в 11:52
поделиться

На Ubuntu я запускал Python 3, и мне пришлось установить

sudo apt-get install python3-dev

. Если вы хотите использовать версию Python, которая не связана с python3, установите связанный python3.x-dev пакет. Например:

sudo apt-get install python3.5-dev
230
ответ дан FreshPow 22 August 2018 в 11:52
поделиться
  • 1
    Я выполнил команду sudo apt-get install python3.4-dev для моего Python3.4, и это решило мою проблему. – Aaron Lelevier 8 September 2014 в 14:40
  • 2
    @Rawrgulmuffins хорошо зависит от того, какую версию python вы используете. В моем случае sudo apt-get install python2.7-dev исправлена ​​проблема – RockScience 30 December 2014 в 10:09
  • 3
    Я добавлю еще одну вещь к этому ответу - если у вас несколько версий Python 3.x, python3-dev установит зависимости для этой версии, которые связаны с командой python3. Итак, если вы хотите установить определенную версию, используйте полную версию, например - python3.x-dev. – xyres 25 December 2017 в 17:12
  • 4
    Это помогло с python 3.6.3 на Ubuntu 14.04 sudo apt-get install python3.6-dev – codestruggle 27 February 2018 в 15:44
  • 5
    Если вы используете версию Python внутри виртуальной среды, которая отличается от вашей системы Python, это. – SuperShoot 2 March 2018 в 06:32

Если вы используете virtualenv с 3.6 python (край сейчас), обязательно установите соответствующий python 3.6 dev sudo apt-get install python3.6-dev, в противном случае выполнение sudo python3-dev установит python dev 3.3.3-1, t решить проблему.

12
ответ дан Guillaume Cisco 22 August 2018 в 11:52
поделиться
  • 1
    Отлично работал для меня на 3.5 (.2). Явная установка правильного пакета dev для вашей версии Python - это хорошая вещь. – Seth 29 May 2017 в 13:52

Иногда даже после установки python-dev ошибка сохраняется. Проверьте наличие ошибки, если она отсутствует.

Сначала загрузите, как указано в https://stackoverflow.com/a / 21530768/8687063 , затем установите gcc

Для apt (Ubuntu, Debian ...):

sudo apt-get install gcc

Для yum (CentOS, RHEL ...) :

sudo yum install gcc

Для dnf (Fedora ...):

sudo dnf install gcc

Для zypper (openSUSE ...):

sudo zypper in gcc

Для apk (Alpine ...):

sudo apk gcc
1
ответ дан HimanshuGahlot 22 August 2018 в 11:52
поделиться

Конечно, python-dev или libpython-all-dev - это первое, что нужно (apt) install, но если это не помогло, как и в моем случае, я советую вам установить внешний интерфейс / g0] пакетами sudo apt-get install libffi-dev и sudo pip install cffi.

Это должно помочь, особенно если вы видите ошибку как / из c/_cffi_backend.c:2:20: fatal error: Python.h: No such file or directory.

3
ответ дан Huge 22 August 2018 в 11:52
поделиться

Это не такая же ситуация, но она также работает для меня, и теперь я могу использовать SWIG с Python3.5:

Я пытался скомпилировать:

gcc -fPIC -c existe.c existe_wrap.c -I /usr/include/python3.5m/

С Python 2.7 работает отлично, а не с моей версией 3.5:

existe_wrap.c: 147: 21: фатальная ошибка: Python.h: нет существующей команды el archio завершена.

После запуска в моей установке Ubuntu 16.04:

sudo apt-get install python3-dev  # for python3.x installs

Теперь я могу скомпилировать без проблем Python3.5:

gcc -fPIC -c existe.c existe_wrap.c -I /usr/include/python3.5m/
9
ответ дан Hugo L.M 22 August 2018 в 11:52
поделиться

Если вы используете малину Pi:

sudo apt-get install python-dev
44
ответ дан josliber 22 August 2018 в 11:52
поделиться
  • 1
    Я не делаю то, что использовал OP, но я использую малину Pi - и у меня была эта ошибка, тогда я сделал то, что вы сказали, а затем ошибка исчезла. Благодаря ! – monojohnny 5 January 2016 в 23:29
  • 2
    Это работает для любого дистрибутива на основе apt :) +1 – max 24 March 2016 в 17:49

Для товарищей OpenSuse:

sudo zypper install python3-devel
8
ответ дан kmonsoor 22 August 2018 в 11:52
поделиться

Это означает, что Python.h отсутствует в ваших путях включения по умолчанию вашего компилятора. Установили ли вы его как в системе, так и локально? Какова ваша ОС?

Вы можете использовать флаг -I<path>, чтобы указать дополнительный каталог, в котором ваш компилятор должен искать заголовки. Вам, вероятно, придется следить за -L<path>, чтобы gcc мог найти библиотеку, с которой вы будете связываться, используя -l<name>.

1
ответ дан Kos 22 August 2018 в 11:52
поделиться

в Fedora запускает это для Python 2:

sudo dnf install python2-devel

и для Python 3:

sudo dnf install python3-devel
31
ответ дан Martin Tournoij 22 August 2018 в 11:52
поделиться
  • 1
    Моя CentOS успешно применяет эту команду – Gary Gauh 21 August 2015 в 09:02
  • 2
    На монетном дворе 18.2 (на основе Ubuntu) это было apt-get install python-dev. – Deleet 31 August 2017 в 15:59

В моем случае, что исправлено в Ubuntu, было установить пакеты libpython-all-dev (или libpython3-all-dev, если вы используете Python 3).

12
ответ дан Oriol Nieto 22 August 2018 в 11:52
поделиться
  • 1
    python-all-dev в моем случае, но достаточно близко. – Dave S. 31 May 2016 в 19:07
  • 2
    @Oriol Nieto, Большое спасибо. python-all-dev также решила проблему для меня. – shrawan_lakhe 22 February 2017 в 15:17

AWS EC2 устанавливает запуск python34:

sudo yum install python34-devel

14
ответ дан orsonady 22 August 2018 в 11:52
поделиться

Для CentOS 7:

sudo yum install python36u-devel

Я выполнил инструкции для установки python3.6 на нескольких виртуальных машинах: https://www.digitalocean.com/community/tutorials/how- to-install-python-3-and-setup-a-local-programming-environment-on-centos-7 , а затем смог построить mod_wsgi и заставить его работать с python3.6 virtualenv

8
ответ дан Paul Roub 22 August 2018 в 11:52
поделиться

Для меня это изменилось:

#include <python2.7/Python.h>

Я нашел файл /usr/include/python2.7/Python.h, а поскольку /usr/include уже находится в пути включения, тогда python2.7/Python.h должно быть достаточно.

Вместо этого вы можете добавить путь include из командной строки - gcc -I/usr/lib/python2.7 (спасибо @ erm3nda).

18
ответ дан sashoalm 22 August 2018 в 11:52
поделиться
  • 1
    Все остальные ответы говорят вам что-то установить. Этот работал для меня. Почему это не лучший ответ? – noɥʇʎԀʎzɐɹƆ 8 August 2016 в 16:20
  • 2
    @ uoɥʇʎPʎzɐɹC Возможно, потому что он не будет работать под python3? – Louis 31 August 2016 в 06:44
  • 3
    Лучше установить lib на gcc -I/usr/lib/python2.7 etc, а не жестко кодировать вызовы include. – erm3nda 29 March 2017 в 02:31
  • 4
    @ noɥʇʎԀʎzɐɹƆ Потому что он должен работать без изменения кода. Вам часто приходится компилировать код, не принадлежащий вам, например, внешнюю зависимость, и самое худшее, что вы можете сделать, это изменить этот код. – Dawid Ferenczy 19 April 2017 в 12:38
  • 5
    @DawidFerenczy Понял. – noɥʇʎԀʎzɐɹƆ 19 April 2017 в 21:03

Убедитесь, что файлы разработчика Python поставляются с вашей ОС.

Не следует жестко закодировать библиотеку и включить пути. Вместо этого используйте pkg-config, который выведет правильные параметры для вашей конкретной системы:

$ pkg-config --cflags --libs python2
-I/usr/include/python2.7 -lpython2.7

Вы можете добавить ее в свою строку gcc :

gcc $(pkg-config --cflags --libs python2) -Wall utilsmodule.c -o Utilc
14
ответ дан sleblanc 22 August 2018 в 11:52
поделиться

В AWS API (centOS) его

yum install python27-devel
18
ответ дан Tadeusz Kopec 22 August 2018 в 11:52
поделиться
  • 1
    Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения от автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно репутации , вы сможете прокомментировать любую запись . – Wtower 9 July 2015 в 07:58
  • 2
    @Wtower Да, это дает ответ. – Tadeusz Kopec 9 July 2015 в 14:28
  • 3
    Это дает ответ. Хотя вам нужно заменить версию на то, что вам нужно. – Ganesh Krishnan 3 August 2015 в 02:45
  • 4
    это помогло преодолеть мои проблемы с попыткой pip install cryptography на экземпляре amazon linux. – Ryan Tuck 7 March 2017 в 00:34
  • 5
    Это был полезный ответ, в то время как на Amazon Linux можно установить python-devel или python2-devel, это единственный, который действительно работал для меня при запуске установки pip внутри virtualenv – Kristofor Carle 18 October 2017 в 02:15

Две вещи, которые вам нужно сделать.

Установить пакет разработки для Python, в случае Debian / Ubuntu / Mint это делается с помощью команды:

sudo apt-get install python-dev

Во-вторых, включить файлы по умолчанию не включены в путь include, а также библиотека Python, связанная с исполняемым файлом по умолчанию. Вам нужно добавить эти флаги (замените версию Python соответственно):

-I/usr/include/python2.7 -lpython2.7 

Другими словами, ваша команда компиляции должна быть:

gcc -Wall -I/usr/include/python2.7 -lpython2.7  utilsmodule.c -o Utilc 
54
ответ дан vartec 22 August 2018 в 11:52
поделиться
  • 1
    мне нужно добавлять флаги для каждого включенного файла в файл расширения C? – Mohanad Y. 4 February 2014 в 10:38
  • 2
    Если вы используете другую версию Python, например, 3.3: sudo apt-get install python3.3-dev – FreshPow 6 August 2014 в 14:07
  • 3
    Я рекомендую использовать pkg-config вместо raw -I: stackoverflow.com/a/21531170/895245 – Ciro Santilli 新疆改造中心 六四事件 法轮功 15 August 2018 в 11:16

Если вы используете Python 3.6 на Amazon Linux (на основе RHEL, но приведенные здесь ответы RHEL не работают):

sudo yum install python36-devel
1
ответ дан Yigal 22 August 2018 в 11:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: