Downloading and Installing PyPy¶
Just like CPython, you need a base interpreter environment and then can install extra packages. The choices for installing the base interpreter are:
- Use conda (x86_64 windows, macOS, linux, arm64 linux)
- Use your distribution package manager (linux)
- Use homebew (macOS, but see issue 3697)
- Use the prebuilt tarballs
- Build from source
Using conda¶
If you require compiled (c-extension) modules like SciPy, we recommend you use conda, which works on Windows10, macOS, and linux x86_64. You can read more about this in the blog post.
$ conda create -c conda-forge -n my_cool_pypy pypy python=3.9 $ conda activate my_cool_pypy $ conda install scipy
Using homebrew¶
On macOS you can also use homebrew, which provides signed packages. As of April 2023, you can find pypy2.7 and pypy3.7 there. Help moving issue 3697 to provide other versions is welcome.
Linux distributions¶
Some Linux distributions provide a pypy package. Note that in order to install additional modules that require compilation, you may need to install additional packages such as pypy-dev. This will manifest as an error about “missing Python.h”. Distributions do not as of yet supply many pypy-ready packages, if you require additional modules we recommend creating a virtualenv and using pip.
Download a pre-built PyPy¶
The quickest way to start using PyPy is to download a prebuilt binary for your OS and architecture. You may be able to use either use the most recent release or one of our development nightly build.
Please note that the nightly builds are not guaranteed to be as stable as official releases, use them at your own risk. Also the macOS binaries are not signed, which means you need to convince macOS they are safe for use.
PyPy is ready to be executed as soon as you unpack the tarball or the zip file, with no need to install it in any specific location:
$ tar xf pypy-x.y.z.tar.bz2 $ ./pypy-x.y.z/bin/pypy Python 2.7.x (xxxxxxxxxxxx, Date, Time) [PyPy x.y.z with GCC x.y.z] on linux2 Type "help", "copyright", "credits" or "license" for more information. And now for something completely different: ``PyPy is an exciting technology that lets you to write fast, portable, multi-platform interpreters with less effort'' >>>>
If you want to make PyPy available system-wide, you can put a symlink to the pypy executable in /usr/local/bin . It is important to put a symlink and not move the binary there, else PyPy would not be able to find its library.
Installing more modules¶
If you want to install 3rd party libraries, the most convenient way is to install pip using ensurepip (unless you want to install virtualenv as explained below; then you can directly use pip inside virtualenvs):
$ ./pypy-xxx/bin/pypy -m ensurepip $ ./pypy-xxx/bin/pypy -mpip install -U pip wheel # to upgrade to the latest versions $ ./pypy-xxx/bin/pypy -mpip install pygments # for example
Third party libraries will be installed in pypy-xxx/site-packages . As with CPython, scripts on linux and macOS will be in pypy-xxx/bin , and on windows they will be in pypy-xxx/Scripts
Installing using virtualenv¶
It is often convenient to run pypy inside a virtualenv. To do this you need a version of virtualenv – 1.6.1 or greater. You can then install PyPy both from a precompiled tarball or from a mercurial checkout after translation:
# from a tarball $ virtualenv -p /opt/pypy-xxx/bin/pypy my-pypy-env # from the mercurial checkout $ virtualenv -p /path/to/pypy/pypy/translator/goal/pypy-c my-pypy-env # in any case activate it $ source my-pypy-env/bin/activate
Note that my-pypy-env/bin/python is now a symlink to my-pypy-env/bin/pypy so you should be able to run pypy simply by typing:
$ python
You should still upgrade pip and wheel to the latest versions via:
$ my-pypy-env/bin/pypy -mpip install -U pip wheel
Building from source¶
If you’re interested in getting more involved, or doing something different with PyPy, consult the build instructions .
© Copyright 2023, The PyPy Project.
PyPy3, полноценная замена классического Python3
«Если необходимо, чтобы Ваш код работал быстрее,
то вероятно, следует просто использовать PyPy»Гвидо ван Россум (создатель Python).
Общие сведения о PyPy.
Компилятор PyPy3 — это полноценная замена CPython. Он построен с использованием языка RPython, который был разработан совместно с ним. Основная причина использовать его вместо CPython — скорость: обычно он работает быстрее.
Цель PyPy — получить скорость, но при этом поддерживать (в идеале) любую программу Python.
На момент апреля 2023 года выпуск PyPy 7.3, реализует три максимальные версии — это Python 3.8 и Python 3.9. Он поддерживает почти весь синтаксис CPython (с небольшими изменениями) и проходит набор тестов Python. Выпуск PyPy 7.3.9 поддерживает большинство используемых модулей стандартной библиотеки Python. Известные различия с CPython смотрите в разделе совместимости.
- интерпретатор PyPy3.8 поддерживает синтаксис и функции Python 3.8, включая стандартную библиотеку для CPython 3.8.
- интерпретатор PyPy3.9 поддерживает синтаксис и функции Python 3.9, включая стандартную библиотеку для CPython 3.9.
Интерпретаторы основаны на одной и той же кодовой базе, поэтому они имеют несколько выпусков. Все API совместимы с другими выпусками PyPy7.3. Основные моменты, начиная с выпуска 7.3.8 включают:
- Исправлены некоторые неудачные тесты стандартной библиотеки на PyPy3.9.
- Обновлен связанная системная библиотека libexpat до 2.4.6 и sqlite3 до версии 3.38.2.
Поддерживаются и обслуживаются следующие архитектуры ЦП:
- x86 (IA-32) и x86_64,
- платформа ARM (ARMv6 or ARMv7, with VFPv3),
- AArch64,
- PowerPC 64bit как с прямым, так и с обратным порядком байтов,
- System Z (s390x),
Скорость исполнения кода компилятором PyPy.
Основной исполняемый файл pypy поставляется с компилятором Just-in-Time. Он действительно быстро запускает большинство тестов, включая очень большие и сложные приложения Python, а не только 10-строчные.
Два случая, когда PyPy не сможет ускорить код:
- Кратковременные процессы: если PyPy запускается со скриптами работающими меньше 2-х секунд, JIT-компилятору не хватит времени для разгона.
- JIT-компилятор не поможет, если все время исполнения программы тратится в подключаемых C-библиотеках, а не на выполнение кода, написанного на Python.
Таким образом, лучше всего PyPy работает при выполнении длительно выполняющихся программ, когда значительная часть времени тратится на выполнение кода Python. Это случай, охватываемый большинством проводимых тестов.
Установка PyPy3 на ОС Windows:
Установка PyPy3 ни чем не отличается от установки классического Python3. Загрузить исходники PyPy3 для ОС Windows можно с официальной страницы. Дистрибутив PyPy3 Windows 32 bit совместим с любыми 32- или 64-битными ОС Windows.
Так же, может понадобиться установщик библиотеки времени выполнения VC. Загрузить файл vcredist.x86.exe можно с официальной страницы https://www.pypy.org
PyPy3 для ОС Windows готов к запуску сразу после установки из .exe или .msi файла.
Установка PyPy3 на Linux (ОС Ubuntu/Debian):
Команда разработчиков PyPy предоставляет предварительно скомпилированные двоичные файлы для многих платформ и ОС. Загрузить исходники PyPy3 можно с официальной страницы.
PyPy готов к запуску сразу после распаковки его из tarball или zip-архива, без необходимости устанавливать его в каком-либо конкретном месте:
# разархивируем pypy3.9 в директорию `/opt` $ sudo tar xf pypy3.9-v7.3.11-linux64.tar.bz2 -C /opt $ /opt/pypy3.9-v7.3.11-linux64/bin/pypy # Python 3.9.16 (Dec 29 2022, 14:23:21) # [PyPy 7.3.11 with GCC 10.2.1 20210130 (Red Hat 10.2.1-11)] on linux # Type "help", "copyright", "credits" or "license" for more information. # >>>>
Если необходимо сделать PyPy доступным для всей системы, то можно создать символическую ссылку на исполняемый файл ln -s /opt/pypy3.7-v7.3.7-linux64/bin/pypy /usr/local/bin/pypy . Важно разместить символическую ссылку, а не перемещать туда двоичный файл, иначе PyPy не сможет найти свою библиотеку.
Установка дополнительных модулей для PyPy3.
Если необходимо установить сторонние библиотеки, наиболее удобный способ — установить менеджер пакетов pip с помощью инструмента ensurepip . Если вы не хотите устанавливать virtualenv , то тогда можно напрямую использовать pip внутри виртуальной среды исполнения:
# установка менеджера пакетов `pip` в распакованный # и готовый сразу к запуску дистрибутив $ ./pypy-xxx/bin/pypy -m ensurepip # обновление `pip` до последней версии $ ./pypy-xxx/bin/pypy -m pip install -U pip wheel # пример установки стороннего модуль Flask $ ./pypy-xxx/bin/pypy -m pip install pygments
Если нужно иметь возможность использовать pip непосредственно из командной строки, то необходимо использовать аргумент —default-pip при вызове surepip . Сторонние библиотеки будут установлены в pypy-xxx/site-packages . Как и в случае с CPython, скрипты в linux и macOS будут в pypy-xxx/bin , а в Windows они будут в pypy-xxx/Scripts .
Установка PyPy3 в виртуальную среду исполнения virtualenv .
Наиболее удобно запускать PyPy3 внутри виртуальной среды исполнения virtualenv . Для этого необходимо установить версию virtualenv -1.6.1 или выше. Затем в установленную среду выполнения, можно установить PyPy как из предварительно скомпилированного архива, так и из разархивированной директории, после проверки PyPy3 на работоспособность.
# Установка из распакованной директории $ virtualenv -p /opt/pypy-xxx/bin/pypy env-pypy # активация виртуального аокружения $ source env-pypy/bin/activate # (env-pypy) $
Внимание! Не используйте для установки PyPy3 встроенный модуль venv (т.к. venv не копирует компилятор PyPy, а ставит на него только ссылки), создавайте виртуальную среду исполнения только при помощи virtualenv .
Примечание: Если, все-же решили использовать venv в качестве виртуальной среды, то ни в коем случае не удаляйте распакованный исходник. После удаления исходника, экземпляр pypy, расположенный в venv перестанет работать.
Пример установки PyPy, используя модуль venv :
# запускаем из распакованного исходника /opt/pypy-xxx/bin/pypy -m venv venv-pypy --prompt PYPY3 # активация виртуального окружения $ source env-pypy/bin/activate # (PYPY3) $
Обратите внимание, что env-pypy/bin/python теперь является символической ссылкой на env-pypy/bin/pypy , следовательно можно запускать pypy, просто набрав python .
Для PyPy3, установленного в виртуальную среду, все равно необходимо обновить pip и wheel до последних версий через:
$ env-pypy/bin/pypy -m pip install -U pip wheel
Совместимость с классическим Python3.
Чистый код Python работает, но есть несколько отличий в управлении временем жизни объекта. Модули, использующие CPython C API, вероятно, будут работать, но не достигнут ускорения за счет JIT. Авторам библиотек, команда разработчиков рекомендуем использовать CFFI и HPy.
Если необходимо использовать PyPy3 с научной экосистемой Python, то рекомендуется использовать компилятор Python conda , т.к. он переупаковывают общие библиотеки, такие как scikit-learn и SciPy для PyPy.
Расширения языка C должны быть перекомпилированы для PyPy, чтобы они работали. В зависимости от системы сборки они могут работать из коробки или будет немного сложнее.
В основном PyPy3 поддерживает стандартные библиотечные модули. Обратите внимание, что многие модули python3 реализованы на чистом Python, следовательно они точно будут работать. Просто нужно проверить, сможет ли PyPy3 на вашей системе импортировать следующие модули:
__builtin__ , __pypy__ , _ast , _cffi_backend , _codecs , _collections , _continuation , _csv , _file , _hashlib , _io , _locale , _lsprof , _md5 , _minimal_curses , _multibytecodec , _multiprocessing , _pickle_support , _pypyjson , _random , _rawffi , _sha , _socket , _sre , _ssl , _struct , _testing , _warnings , _weakref , array , binascii , bz2 , cStringIO , cmath , cppyy , cpyext , crypt , errno , exceptions , fcntl , gc , imp , itertools , marshal , math , mmap , operator , parser , posix , pwd , pyexpat , pypyjit , select , signal , symbol , sys , termios , thread , time , token , unicodedata , zipimport , zlib .
Если PyPy3 импортирует вышеуказанные модули без ошибок, то он полностью совместим с вашим Python3 и должен работать без каких либо ошибок.
Поддерживается и написано на чистом Python: cPickle , ctypes , datetime , dbm , _functools , grp , readline , resource , sqlite3 , syslog .
Все сторонние модули, которые написаны на чистым python в CPython, конечно будут работать после успешной установки.
Различия, связанные со стратегиями сбора мусора.
Сборщики мусора, используемые или реализованные PyPy3, не основаны на подсчете ссылок, поэтому объекты не освобождаются мгновенно, когда они больше недоступны. Наиболее очевидный эффект от этого заключается в том, что файлы (и сокеты и т. д.) не закрываются сразу после выхода за пределы области видимости. Это отличие от классического Python3, не будет изменяться командой разработчиков.
Следующий код заполнит файл не сразу, а только через определенный промежуток времени, когда GC выполнит сборку мусора и очистит вывод:
open("filename", "w").write("stuff")
Правильное использование заключается в следующем:
with open("filename", "w") as f: f.write("stuff")
Та же проблема — не закрытие файлов — может также возникнуть, если программа открывает большое количество файлов, не закрывая их явно. В этом случае можно легко достичь системного ограничения на количество файловых дескрипторов, которые разрешено открывать одновременно.
PyPy3 можно запустить с параметром командной строки -X track-resources (например, pypy -X track-resources myprogram.py ). Это вызывает ResourceWarning , когда GC закрывает незакрытый файл или сокет. Также дается трассировка для места, где был открыт файл или сокет, что помогает найти места, где отсутствует метод .close() .
Точно так же помните, что необходимо закрывать неизрасходованный генератор, чтобы ожидающие завершения операторы finally или with выполнялись немедленно:
def mygen(): with foo: yield 42 for x in mygen(): if x == 42: # foo .__ exit__ запускается не сразу! break # Необходимо поступать следующим образом gen = mygen() try: for x in gen: if x == 42: break finally: gen.close()
В более общем смысле, методы __del__() не выполняются так же предсказуемо, как на CPython: в PyPy3 они запускаются через некоторое время (или не запускаются вообще, если программа тем временем завершает работу).
Обратите внимание, что PyPy3 возвращает неиспользуемую память операционной системе, если есть системный вызов madvise() (по крайней мере в Linux, OS X, BSD) или в Windows. Важно понимать, что можно не увидеть этого в выводе команды терминала top .
Неиспользуемые страницы памяти помечаются MADV_FREE , который сообщает системе: Если вам понадобится больше памяти в какой-то момент, возьмите эту страницу. Пока памяти достаточно, столбец RES вверху может оставаться высоким. Исключением из этого правила являются системы без MADV_FREE , где PyPy3 использует MADV_DONTNEED , который принудительно снижает RES (включает Linux
Почему PyPy3 жрет так много памяти?
PyPy3 возвращает неиспользуемую память операционной системе только после системного вызова madvise() (по крайней мере, в Linux, OS X, BSD) или в Windows. Важно понимать, что такое поведение может НЕ показываться топе утилиты bash htop . Неиспользуемые страницы помечаются MADV_FREE , что говорит системе: «Если в какой-то момент понадобится больше памяти, то возьмите эту страницу«. Пока памяти много, верхний столбец RES остается высоким.
Исключением из этого правила являются системы без MADV_FREE , где PyPy3 использует MADV_DONTNEED , что принудительно снижает RES . Это включает Linux = 4.4.
Подклассы встроенных типов
Официально в CPython вообще нет правила, когда точно переопределенный метод подклассов встроенных типов вызывается неявно или нет. В качестве приближения эти методы никогда не вызываются другими встроенными методами того же объекта. Например, переопределенный __getitem__() в подклассе dict не будет вызываться, например, встроенный метод dict.get() .
Сказанное выше верно как для CPython, так и для PyPy. Могут возникнуть различия в том, будет ли встроенная функция или метод вызывать переопределенный метод другого объекта, кроме self . В PyPy они часто вызываются в тех случаях, когда CPython этого не делает.
class D(dict): def __getitem__(self, key): return "%r from D" % (key,) class A(object): pass a = A() a.__dict__ = D() a.foo = "a's own foo" print(a.foo) # CPython => a's own foo # PyPy => 'foo' from D glob = D(foo="base item") loc = <> exec "print foo" in glob, loc # CPython => base item # PyPy => 'foo' from D
Игнорируемые исключения.
Во многих случаях CPython может молча проглатывать исключения. Точный список случаев, когда это происходит, довольно длинный, хотя большинство случаев очень редки. Наиболее известные места — это настраиваемые расширенные методы сравнения (например, __eq__ ); поиск по словарю; вызовы некоторых встроенных функций, таких как isinstance() .
Если это поведение явно не предусмотрено конструкцией и не задокументировано как таковое (например, для hasattr() ), в большинстве случаев PyPy будет поднимать исключения.
Идентичность встроенных типов ( is и id ).
Идентичность объектов примитивных типов работает по равенству значений, а не по идентичности id . Это означает, что x + 1 is x + 1 всегда верно для произвольных целых чисел x . Правило распространяется на следующие встроенные типы:
- int ;
- float ;
- long ;
- complex ;
- str (только пустые или односимвольные строки)`;
- unicode (только пустые или односимвольные строки)`;
- tuple (только пустые кортежи)`;
- frozenset (только пустой frozenset )`.
Это изменение также требует некоторых изменений в id . id выполняет следующее условие: x is y id(x) == id(y) . Поэтому id вышеперечисленных типов будет возвращать значение, которое вычисляется из аргумента, и, таким образом, может быть больше, чем sys.maxint (т. е. может быть произвольно длинным).
Обратите внимание, что строки длиной 2 или более могут быть равны, не будучи идентичными. Аналогично, x is (2,) не обязательно истинно, даже если x содержит кортеж и x == (2,) . Правила уникальности применимы только к частным случаям, описанным выше. Правила str , unicode , tuple и frozenset были добавлены в PyPy выпуск 5.4; до этого тест типа if x is «?» или if x is () мог потерпеть неудачу, даже если x был равен «?» или () . Новое поведение, добавленное в PyPy выпуск 5.4, ближе к CPython, который кэширует именно пустой tuple / frozenset и (как правило, но не всегда) str и unicode длинной
Обратите внимание, что для float существует только один объект на “битовый шаблон” float . Таким образом, float(‘nan’) is float(‘nan’) истинно на PyPy3, но не на CPython, потому что они являются двумя объектами; но 0.0 is -0.0 всегда False , так как битовые шаблоны различны. Как обычно, float(‘nan’) == float(‘nan’) всегда ложно. При использовании в контейнерах (например, в виде элементов list или в set ) точное правило равенства используется так: “ if x is y or x == y ” (как на CPython, так и на PyPy); как следствие, поскольку все nan идентичны в PyPy3, вы не можете иметь несколько из них в множестве set , в отличие от CPython.
Другим следствием является то, что cmp(float(‘nan’), float(‘nan’)) == 0 , потому что cmp() сначала проверяет is , идентичны ли аргументы (нет хорошего значения для возврата из этого cmp() , так как функция cmp() делает вид, что существует полный порядок для чисел с плавающей запятой, но это неверно для NaN ).
Различия в производительности.
CPython имеет оптимизацию, которая может сделать повторную конкатенацию строк неквадратичной. Например, такой код выполняется за время O(n) :
s = '' for string in mylist: s += string
В PyPy3 этот код всегда будет иметь квадратичную сложность. Также обратите внимание, что оптимизация CPython хрупкая и в любом случае может сломаться из-за небольших изменений в коде. Так что все равно необходимо заменить код выше на:
parts = [] for string in mylist: parts.append(string) s = "".join(parts)
В принципе это основные отличия с которыми сталкивается 80% разработчиков.
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Выбираем разрядность Python3 для Windows
- Установка Python3 на ОС Windows
- Установка Python3 на Ubuntu (Debian) из репозиториев
- Выбираем разрядность Python3 для Linux
- Установка Python 3.x из исходников на ОС Linux
- Запуск и использование интерпретатора Python
- Установка и использование PyPy3, совместимость с Python3
- Когда следует переходить на новую версию Python
How to install and work with PyPy
Try a faster and easier way to manage your Python dependencies. Use Python 3.9 by ActiveState and build your own runtime with the packages and dependencies you need. Get started for free by creating an account on the ActiveState Platform or logging in with your GitHub account.
PyPy (not to be confused with the Python Package Index, which is abbreviated PyPI) is an open source, alternative implementation of the Python programming language. PyPy is a just-in-time compiler that often runs faster than CPython.
Most Python code runs efficiently on PyPy except for:
- Code that depends on Python 3.7+ syntax.
- Code that depends on CPython extensions, which either does not work or performs poorly when run in PyPy.
Note that pip does not come with PyPy, but can be installed in a PyPy environment after PyPy has been installed.
PyPy Installation
PyPy is available for installation for Linux, MacOS, and Windows operating systems.
PyPy can be either compiled from source code and then installed, or it can be downloaded as a set of precompiled binary files that will let you run PyPy as-is. The latter approach is simplest and recommended:
Create a directory in which you would like to download and run PyPy from. In Windows, for example:
C:\pypy
Download PyPy precompiled binary files in zipped format for your operating system from:
https://www.pypy.org/download.html
Once you have downloaded PyPy and unzipped it in your installation directory, it can either be run locally from within the directory or run globally once you set the PyPy environment variables. To open a PyPy shell, enter:
pypy3
Setting PyPy Environment Variables
Once PyPy has been installed, you can set the environment PATH for PyPy, the same as you would for Python.
Set PyPy Environment PATH on Linux
You can make PyPy available system-wide by putting a symlink to the PyPy executable in /usr/local/bin. It is important to use a symlink and not move the binary, otherwise PyPy will not be able to find its library.
PyPy Environment PATH on MacOS
You can make PyPy available system-wide as a PATH environment variable by making an entry in the .bash_profile file. Note that the entry will need to be upper-case so that it will be recognized throughout the system, and words linked with underscores.
PyPy Environment PATH on Windows
To run PyPy from any location, you need to add the directory in which it is installed in, as a System PATH environment variable:
- Open the Control Panel and navigate to System.
- Click on Advanced system settings in the upper left panel.
- Click on Environment Variables.
- Under System Variables, scroll down then double-click the PATH variable.
- Click New, and add the directory where PyPy is installed, e.g.C:\PyPy
- Select OK.
Conda Install PyPy
PyPy can be installed in a Conda environment, with either of the following commands:
conda install -c conda-forge pypy conda install -c conda-forge/label/cf202003 pypy
PyPy Pip Installation
Pip/pip3 is the official package manager for Python, but it can also be used by PyPy for installing Python modules. The easiest way to install pip for PyPy on any operating system is to use the ensurepip package that comes with Python and PyPy by default.
To install ensurepip, run:
pypy -m ensurepip
To ensure you’re using the latest version of ensurepip, run:
pypy -m ensurepip --upgrade
Pip can now be installed by doing the following:
- Download the latest version of get-pip.py from https://bootstrap.pypa.io/.
- CD into the download directory, and enter the following command:
MacOS or Linux:
sudo pypy get-pip.py
pypy get-pip.py
Add pip to your System Path Environment Variables so you can run it from any location in your operating system (refer to the instructions for adding PyPy as a System PATH environment variable above).
PyPy Pip3 Upgrade
You can upgrade pip In a PyPy environment by running the following command:
pypy -m pip3 install --upgrade pip
PyPy Pip Usage
Pip can be sued in PyPy deployments to install packages and their required dependencies from the Python Package Index (PyPI), using the following command:
pypy -m pip install
A modern solution to Python package management – Try ActiveState’s Platform
Dependency resolution is at the core of the ActiveState Platform. When you create a project and start adding requirements, the Platforms tell you what dependencies those requirements have.
The ActiveState Platform is a cloud-based build tool for Python. It provides build automation and vulnerability remediation for:
- Python language cores, including Python 2.7 and Python 3.5+
- Python packages and their dependencies, including:
- Transitive dependencies (ie., dependencies of dependencies)
- Linked C and Fortran libraries, so you can build data science packages
- Operating system-level dependencies for Windows, Linux, and macOS
- Shared dependencies (ie., OpenSSL)
- Find, fix and automatically rebuild a secure version of Python packages like Django and environments in minutes

The ActiveState Platform aims to handle every dependency for every language. That means handling libraries down to the C/C++ level, external tools, and all the conditional dependencies that exist. To take things even further, our ultimate goal is to support multi-language projects. That means that you can create a project using both Python and Perl packages, and we’ll make sure that both languages are using the same (up to date) OpenSSL version.
Python Dependency Management In Action
Get a hands-on appreciation for how the ActiveState Platform can help you manage your dependencies for Python environments. Just run the following command to install Python 3.9 and our package manager, the State Tool:
Windows
powershell -Command "& $([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://platform.activestate.com/dl/cli/install.ps1'))) -activate-default ActiveState-Labs/Python-3.9Beta"
Linux
Now you can run state install . Learn more about how to use the State Tool to manage your Python environment.
Let us know your experience in the ActiveState Community forum.
Watch this video to learn how to use the ActiveState Platform to create a Python 3.9 environment, and then use the Platform’s CLI (State Tool) to install and manage it.
Как установить pypy в python
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно.
Необходимо обновить браузер или попробовать использовать другой.
Лучшая CTF площадка рунета Codeby Games Обучение кибербезопасности в игровой форме. Выполняй задания по кибербезопасности в формате CTF и получай бесценный опыт.
B правой части каждого сообщения есть стрелки ⇧ и ⇩ . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок ✔ в правой части сообщения.
