Я пишу (действительно неуклюжую) 2D-моделацию жидкости на Python. В настоящее время я генерирую начальное состояние для сима, просто заполняя 2d-массив случайными числами с плавающей запятой, сгенерированными модулем random, а затем размываю текстуру, усредняя каждую ячейку с окружающими ее ячейками. Это очень медленно и создает несколько блочную текстуру шума из-за квадратной формы размытия. Поэтому, когда мне надоело время от времени ждать по десять секунд, пока Python сгенерирует новую случайную сетку, я решил потратить, как мне казалось, всего десять минут на то, чтобы выяснить, как использовать для этого библиотеку. Пять часов спустя я оказываюсь там же, где и начал, только еще больше расстроенным. Я пытался установить этот пакет с помощью команды pip install noise, но каждый раз, когда я пытаюсь выполнить команду, возвращается одна и та же ошибка, даже после того, как я попробовал все остальные исправления подобных проблем, которые я смог найти. Ошибка выглядит следующим образом:
Defaulting to user installation because normal site-packages is not writeable
Collecting noise
Using cached noise-1.2.2.zip (132 kB)
Preparing metadata (setup.py) ... done
Building wheels for collected packages: noise
Building wheel for noise (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> [31 lines of output]
running bdist_wheel
running build
running build_py
creating build
creating build\lib.win32-cpython-312
creating build\lib.win32-cpython-312\noise
copying perlin.py -> build\lib.win32-cpython-312\noise
copying shader.py -> build\lib.win32-cpython-312\noise
copying shader_noise.py -> build\lib.win32-cpython-312\noise
copying test.py -> build\lib.win32-cpython-312\noise
copying __init__.py -> build\lib.win32-cpython-312\noise
running build_ext
building 'noise._simplex' extension
creating build\temp.win32-cpython-312
creating build\temp.win32-cpython-312\Release
"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\bin\HostX86\x86\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD "-IC:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.1008.0_x64__qbz5n2kfra8p0\include" "-IC:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.1008.0_x64__qbz5n2kfra8p0\Include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /Tc_simplex.c /Fobuild\temp.win32-cpython-312\Release\_simplex.obj
_simplex.c
_simplex.c(235): warning C4244: 'return': conversion from 'double' to 'float', possible loss of data
_simplex.c(296): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data
_simplex.c(297): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data
_simplex.c(308): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data
_simplex.c(309): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data
"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\bin\HostX86\x86\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO "/LIBPATH:C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.1008.0_x64__qbz5n2kfra8p0\libs" "/LIBPATH:C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.1008.0_x64__qbz5n2kfra8p0" "/LIBPATH:C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.1008.0_x64__qbz5n2kfra8p0\PCbuild\win32" "/LIBPATH:C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\lib\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22000.0\ucrt\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22000.0\\um\x86" "/LIBPATH:C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\lib\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22000.0\ucrt\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22000.0\\um\x86" /EXPORT:PyInit__simplex build\temp.win32-cpython-312\Release\_simplex.obj /OUT:build\lib.win32-cpython-312\noise\_simplex.cp312-win_amd64.pyd /IMPLIB:build\temp.win32-cpython-312\Release\_simplex.cp312-win_amd64.lib
Creating library build\temp.win32-cpython-312\Release\_simplex.cp312-win_amd64.lib and object build\temp.win32-cpython-312\Release\_simplex.cp312-win_amd64.exp
_simplex.obj : error LNK2001: unresolved external symbol __imp__PyFloat_FromDouble
_simplex.obj : error LNK2001: unresolved external symbol __imp__PyErr_SetString
_simplex.obj : error LNK2001: unresolved external symbol __imp__PyExc_ValueError
_simplex.obj : error LNK2001: unresolved external symbol __imp__PyModule_Create2
_simplex.obj : error LNK2001: unresolved external symbol __imp__PyArg_ParseTupleAndKeywords
build\lib.win32-cpython-312\noise\_simplex.cp312-win_amd64.pyd : fatal error LNK1120: 5 unresolved externals
error: command 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.36.32532\\bin\\HostX86\\x86\\link.exe' failed with exit code 1120
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for noise
Running setup.py clean for noise
Failed to build noise
ERROR: Could not build wheels for noise, which is required to install pyproject.toml-based projects
Я пробовал обновить колесо, инструменты настройки, Cmake, pip, Python и даже PowerShell, но безрезультатно. Я также добавил все каталоги, связанные с Python, в PATH. Ничего не помогло, все равно получаю ту же ошибку.






Из настроек решателя я вижу, что установлена зависимость пакета шума, которая потенциально могла быть скомпилирована неправильным образом. Все еще существуют некоторые неопределенные ссылки во время компоновки на функции в библиотеке и системе Python, которые привели к следующим сообщениям об ошибках. Это может быть связано с рядом причин, например, с отсутствующими зависимостями или наличием другой версии компилятора. Одним из возможных решений всех проблем, описанных выше, является установка элемента из заранее созданного двоичного файла, а не компиляция его из исходного кода. Для этого убедитесь, что указанная вами версия пакета соответствует версии Python и операционной системе, которые будут использоваться. Если это невозможно, вы всегда можете использовать более раннюю версию пакета, которая потенциально может быть лучше для использования в ваших случаях.
Я попробовал это, и теперь Пип просто говорит WARNING: Package(s) not found: noise, когда я бегу pip show noise
From the solver settings I see that there is a noise package dependency installed that could potentially have been compiled in a wrong manner. Я не знаю, где вы это видите в предоставленном выводе.
@OttoMoir, это не сработает. Архивы на pypi представляют собой дистрибутивы с исходным кодом и не могут быть скопированы в пакет сайта как есть. Вам нужно будет скомпилировать этот модуль
Пакет, который вы пытаетесь установить, содержит код C, поэтому его необходимо скомпилировать.
Однако у вас проблема с вашей цепочкой инструментов:
Вы используете компилятор/компоновщик x86, см. HostX86\x86\cl.exe и ...HostX86\x86\link.exe — убедитесь, что у вас 64-битный Python и что вы выполняете C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat, прежде чем пытаться выполнить pip install
Кроме того, у вас могут возникнуть проблемы с совместимостью:
Библиотека, которую вы пытаетесь установить, последний раз обновлялась в 2015 году. Мне кажется, что недостающие символы должны присутствовать и в Python 3.12, но нет гарантии, что установка в эту версию Python пройдет без проблем. Если после того, как вы убедились, что вы компилируете для x64, у вас все еще есть проблемы, попробуйте понизить версию Python до более низкой версии.
поэтому вместо установки через pip мне следует просто загрузить .zip из индекса пакетов Python или GitHub и извлечь его в каталог пакетов сайта Python?