Как заставить использование python 3 в cocotb?
Я использую CocoTB для тестирования своего дизайна HDL, но, как я понимаю, его можно использовать с python2.7 или python3.
В конфигурационном файле setup.py я вижу, что оба поддерживаются:
[...]
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
[...]
В тесте endian_swapper (examples/endian_swapper/tests/test_endian_swapper.py), если я изменю сценарий теста, чтобы увидеть, какая версия используется:
@cocotb.test()
def wavedrom_test(dut):
"""
Generate a JSON wavedrom diagram of a trace and save it to wavedrom.json
"""
print("Python version used {}".format(sys.version_info))
Я вижу, что python2.7 используется, когда я запускаю тест с командой "make":
Python version used sys.version_info(major=2, minor=7, micro=9, releaselevel='final', serial=0)
Мой исполняемый файл python3 называется... на самом деле python3 (debian). Есть ли канонический способ заставить cocotb использовать python3 вместо python2?
1 ответ
Я нашел решения на linuxconfig.org, благодаря themperek. Но это не совсем то, что я хочу.
Решение с псевдонимом не работает для меня. Альтернатива обновления работает, но только с "официальным" python3, установленным на Debian. Я не могу использовать альтернативу (3.7), установленную вручную.
$ sudo update-alternatives --config python
There are 3 choices for the alternative python (providing /usr/bin/python).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/python3.7 2 auto mode
1 /usr/bin/python2.7 0 manual mode
2 /usr/bin/python3.4 1 manual mode
* 3 /usr/bin/python3.7 2 manual mode
Press enter to keep the current choice[*], or type selection number: 3
$ make clean;make
0.00ns INFO Running on Icarus Verilog version 11.0 (devel)
0.00ns INFO Python interpreter initialised and cocotb loaded!
0.00ns INFO Running tests with Cocotb v1.0.1 from /opt/cocotb
0.00ns INFO Seeding Python random module with 1554105931
0.00ns INFO Found test test_ttl.ttl_test
0.00ns INFO Running test 1/1: ttl_test
0.00ns INFO Starting test: "ttl_test"
Description: simple ttl test function
[...]
3.4.2 (default, Feb 7 2019, 06:11:23)
[...]
Я нашел правильный способ сделать это.
Сначала загрузите последнюю версию python на официальном сайте:
$ wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz
Затем удалите его и настройте с помощью опции --enable-shared
$ tar -Jxvf Python-3.7.4.tar.xz
$ cd Python-3.7.4
$ ./configure --enable-shared
$ make
$ sudo make install
После установки перейдите в свой тестовый каталог cocotb, затем установите виртуальную среду:
$ export LD_LIBRARY_PATH=/usr/local/lib
$ virtualenv --python=/usr/local/bin/python3.7 envp37
$ source envp37/bin/activate
$ python -m pip install cocotb
Затем вы можете запустить тестовую среду cocotb с помощью традиционной команды make:
$ make
Активируйте среду Python с помощью:
$ deactivate
Попробуйте обновить переменную PATH. работал у меня.
когда cocotb ищет python, он ищет его в папках, перечисленных в переменной PATH.
скажем, что ваш полный путь python3 находится в/usr/bin/python3
(вы можете найти полный путь к python3 по which python3
)
Я также добавил сюда ссылку на новое место на случай, если python2 и python3 находятся в одной папке...
> python -V
Python 2.7.17
> ln -s /usr/bin/python3 /home/$USER/python
> export PATH="/home/$USER:$PATH"
> python -V
Python 3.6.9