AcademySoftwareFoundation / OpenTimelineIO

Open Source API and interchange format for editorial timeline information.
http://opentimeline.io
Apache License 2.0
1.43k stars 279 forks source link

Support for Python 3.10? #1224

Closed werwack closed 2 years ago

werwack commented 2 years ago

Feature Request

Is this a New Feature, or a Proposed Change to existing Behavior? This is the continuity of existing feature.

Description

Describe the new feature, or describe the modification to existing behavior, and provide context as necessary to help with understanding how the feature relates to a workflow or functionality. I am the developer of Shot Manager, a Blender add-on that provides many features to manipulate shots in the 3D space of Blender but also to import and export edits with other software. To do so I rely on OpenTimelineIO. Thing is Blender is changing regularly (or irregularly I should say) the version of Python they support, this in order to stick to the latest version. An in March Blender 3.1 will be on Python 3.10.

Would it be possible to have a version of OTIO for Python 3.10? That would be of a great help! Thank you

meshula commented 2 years ago

Your Shot Manager project looks very cool!

If I'm not mistaken, your team is building OpenTimelineIO locally, rather than using a wheel. Is that correct? I notice also in your FAQ that it says you are working on getting a Mac build of OTIO working for Python 3.9. (https://ubisoft-shotmanager.readthedocs.io/en/latest/troubleshoot/faq.html)

I did a test build just now on Mac M1, with Python 3.10, and didn't encounter a problem

...
writing build/bdist.macosx-11.0-arm64/egg/EGG-INFO/native_libs.txt
creating 'dist/OpenTimelineIO-0.15.0.dev1-py3.10-macosx-11.0-arm64.egg' and adding 'build/bdist.macosx-11.0-arm64/egg' to it
Processing OpenTimelineIO-0.15.0.dev1-py3.10-macosx-11.0-arm64.egg
Adding OpenTimelineIO 0.15.0.dev1 to easy-install.pth file
Installing otioautogen_serialized_schema_docs script to /Users/nporcino/miniforge3/envs/otio-py310/bin
Installing otiocat script to /Users/nporcino/miniforge3/envs/otio-py310/bin
Installing otioconvert script to /Users/nporcino/miniforge3/envs/otio-py310/bin
Installing otiopluginfo script to /Users/nporcino/miniforge3/envs/otio-py310/bin
Installing otiostat script to /Users/nporcino/miniforge3/envs/otio-py310/bin
Installing otioview script to /Users/nporcino/miniforge3/envs/otio-py310/bin

Installed /Users/nporcino/miniforge3/envs/otio-py310/lib/python3.10/site-packages/OpenTimelineIO-0.15.0.dev1-py3.10-macosx-11.0-arm64.egg
Processing dependencies for OpenTimelineIO==0.15.0.dev1
Searching for pyaaf2==1.4.0
Best match: pyaaf2 1.4.0
Adding pyaaf2 1.4.0 to easy-install.pth file

Using /Users/nporcino/miniforge3/envs/otio-py310/lib/python3.10/site-packages
Finished processing dependencies for OpenTimelineIO==0.15.0.dev1

Perhaps the thing to do is to list the issues you are encountering here to work through, and if any of them require extra attention, new issues could be opened to track them individually?

werwack commented 2 years ago

Hi Meshula, Thanks for your interest in Shot Manager and your test on Python 3.10.

In fact we are not building our wheel anymore. We did that for OTIO 0.12 cause we had a fix to do somewhere (I don't remember what, it was made by a developer of the team at the time) and for OTIO 0.13 cause there was no wheel for Python 3.9 when Blender moved to it. I also had to drop off the wheel for Mac cause I have no practical means to test it (no Mac :D ) So currently we are using the existing wheel for 3.9.

I am not so much at ease myself with the versions of Python and libraries and wheels. What I know though is that installing OTIO thanks to PIP is pretty handful and when there is no version that suits the Python version of Blender things become quickly complicated. In particular, it there is no wheel available that forces me to create one and to provide it with the add-on. Deployment and maintainance ar then more tricky.

meshula commented 2 years ago

@JeanChristopheMorinPerso, @reinecke ~ do you have any notes to share in this thread on what's necessary for automation around Python 3.10 OTIO wheels?

JeanChristopheMorinPerso commented 2 years ago

The best notes are going to be when I added Python 3.9 support I think, see https://github.com/PixarAnimationStudios/OpenTimelineIO/pull/1080/files for anyone interested in contributing.

As for Mac M1, that's a different story. I left some notes in https://github.com/PixarAnimationStudios/OpenTimelineIO/pull/1214.

So all in all, adding 3.10 support should be a straight forward task for anyone interested in contributing. I'd like to do it but I have limited bandwidth right now.

JeanChristopheMorinPerso commented 2 years ago

And for the curious, I've been running OTIO with Python 3.10 for a while now (locally) and I haven't hit any issues, at least on Linux.

Gattung commented 2 years ago

This is the error I get when installing opentimelineio under shotmanager addon with Blender 3.2 and 3.1 which is using python 3.10

Collecting opentimelineio Using cached OpenTimelineIO-0.14.1.tar.gz (2.2 MB) Installing build dependencies ... done Getting requirements to build wheel ... done Preparing wheel metadata ... done Collecting pyaaf2~=1.4.0 Using cached pyaaf2-1.4.0.tar.gz (88 kB) Using legacy 'setup.py install' for pyaaf2, since package 'wheel' is not installed. Building wheels for collected packages: opentimelineio Building wheel for opentimelineio (PEP 517) ... error ERROR: Command errored out with exit status 1: command: 'D:\development\blender-git\build_windows_Release_x64_vc16_Release\bin\Release\3.2\python\bin\python.exe' 'D:\development\blender-git\build_windows_Release_x64_vc16_Release\bin\Release\3.2\python\lib\site-packages\pip_vendor\pep517\in_process_in_process.py' build_wheel 'C:\Users\Kumiko\AppData\Local\Temp\tmpq27fd9bn' cwd: C:\Users\Kumiko\AppData\Local\Temp\pip-install-kg_31jge\opentimelineio_52e3b6b997dd47929d61cd32a8cba4f5 Complete output (192 lines): running bdist_wheel running build running build_py creating build creating build\lib.win-amd64-3.10 creating build\lib.win-amd64-3.10\opentimelineio copying src\py-opentimelineio\opentimelineio\exceptions.py -> build\lib.win-amd64-3.10\opentimelineio copying src\py-opentimelineio\opentimelineio\hooks.py -> build\lib.win-amd64-3.10\opentimelineio copying src\py-opentimelineio\opentimelineio\media_linker.py -> build\lib.win-amd64-3.10\opentimelineio copying src\py-opentimelineio\opentimelineio\opentime.py -> build\lib.win-amd64-3.10\opentimelineio copying src\py-opentimelineio\opentimelineio\test_utils.py -> build\lib.win-amd64-3.10\opentimelineio copying src\py-opentimelineio\opentimelineio\url_utils.py -> build\lib.win-amd64-3.10\opentimelineio copying src\py-opentimelineio\opentimelineio__init.py -> build\lib.win-amd64-3.10\opentimelineio creating build\lib.win-amd64-3.10\opentimelineio\adapters copying src\py-opentimelineio\opentimelineio\adapters\adapter.py -> build\lib.win-amd64-3.10\opentimelineio\adapters copying src\py-opentimelineio\opentimelineio\adapters\cmx_3600.py -> build\lib.win-amd64-3.10\opentimelineio\adapters copying src\py-opentimelineio\opentimelineio\adapters\fcp_xml.py -> build\lib.win-amd64-3.10\opentimelineio\adapters copying src\py-opentimelineio\opentimelineio\adapters\file_bundle_utils.py -> build\lib.win-amd64-3.10\opentimelineio\adapters copying src\py-opentimelineio\opentimelineio\adapters\otiod.py -> build\lib.win-amd64-3.10\opentimelineio\adapters copying src\py-opentimelineio\opentimelineio\adapters\otioz.py -> build\lib.win-amd64-3.10\opentimelineio\adapters copying src\py-opentimelineio\opentimelineio\adapters\otio_json.py -> build\lib.win-amd64-3.10\opentimelineio\adapters copying src\py-opentimelineio\opentimelineio\adapters\svg.py -> build\lib.win-amd64-3.10\opentimelineio\adapters copying src\py-opentimelineio\opentimelineio\adapters__init.py -> build\lib.win-amd64-3.10\opentimelineio\adapters creating build\lib.win-amd64-3.10\opentimelineio\algorithms copying src\py-opentimelineio\opentimelineio\algorithms\filter.py -> build\lib.win-amd64-3.10\opentimelineio\algorithms copying src\py-opentimelineio\opentimelineio\algorithms\stack_algo.py -> build\lib.win-amd64-3.10\opentimelineio\algorithms copying src\py-opentimelineio\opentimelineio\algorithms\timeline_algo.py -> build\lib.win-amd64-3.10\opentimelineio\algorithms copying src\py-opentimelineio\opentimelineio\algorithms\track_algo.py -> build\lib.win-amd64-3.10\opentimelineio\algorithms copying src\py-opentimelineio\opentimelineio\algorithms__init.py -> build\lib.win-amd64-3.10\opentimelineio\algorithms creating build\lib.win-amd64-3.10\opentimelineio\console copying src\py-opentimelineio\opentimelineio\console\autogen_plugin_documentation.py -> build\lib.win-amd64-3.10\opentimelineio\console copying src\py-opentimelineio\opentimelineio\console\autogen_serialized_datamodel.py -> build\lib.win-amd64-3.10\opentimelineio\console copying src\py-opentimelineio\opentimelineio\console\console_utils.py -> build\lib.win-amd64-3.10\opentimelineio\console copying src\py-opentimelineio\opentimelineio\console\otiocat.py -> build\lib.win-amd64-3.10\opentimelineio\console copying src\py-opentimelineio\opentimelineio\console\otioconvert.py -> build\lib.win-amd64-3.10\opentimelineio\console copying src\py-opentimelineio\opentimelineio\console\otiopluginfo.py -> build\lib.win-amd64-3.10\opentimelineio\console copying src\py-opentimelineio\opentimelineio\console\otiostat.py -> build\lib.win-amd64-3.10\opentimelineio\console copying src\py-opentimelineio\opentimelineio\console__init.py -> build\lib.win-amd64-3.10\opentimelineio\console creating build\lib.win-amd64-3.10\opentimelineio\core copying src\py-opentimelineio\opentimelineio\core\composable.py -> build\lib.win-amd64-3.10\opentimelineio\core copying src\py-opentimelineio\opentimelineio\core\composition.py -> build\lib.win-amd64-3.10\opentimelineio\core copying src\py-opentimelineio\opentimelineio\core\item.py -> build\lib.win-amd64-3.10\opentimelineio\core copying src\py-opentimelineio\opentimelineio\core\mediaReference.py -> build\lib.win-amd64-3.10\opentimelineio\core copying src\py-opentimelineio\opentimelineio\core_core_utils.py -> build\lib.win-amd64-3.10\opentimelineio\core copying src\py-opentimelineio\opentimelineio\core\init__.py -> build\lib.win-amd64-3.10\opentimelineio\core creating build\lib.win-amd64-3.10\opentimelineio\plugins copying src\py-opentimelineio\opentimelineio\plugins\manifest.py -> build\lib.win-amd64-3.10\opentimelineio\plugins copying src\py-opentimelineio\opentimelineio\plugins\python_plugin.py -> build\lib.win-amd64-3.10\opentimelineio\plugins copying src\py-opentimelineio\opentimelineio\plugins\init__.py -> build\lib.win-amd64-3.10\opentimelineio\plugins creating build\lib.win-amd64-3.10\opentimelineio\schema copying src\py-opentimelineio\opentimelineio\schema\clip.py -> build\lib.win-amd64-3.10\opentimelineio\schema copying src\py-opentimelineio\opentimelineio\schema\effect.py -> build\lib.win-amd64-3.10\opentimelineio\schema copying src\py-opentimelineio\opentimelineio\schema\external_reference.py -> build\lib.win-amd64-3.10\opentimelineio\schema copying src\py-opentimelineio\opentimelineio\schema\foo.py -> build\lib.win-amd64-3.10\opentimelineio\schema copying src\py-opentimelineio\opentimelineio\schema\generator_reference.py -> build\lib.win-amd64-3.10\opentimelineio\schema copying src\py-opentimelineio\opentimelineio\schema\image_sequence_reference.py -> build\lib.win-amd64-3.10\opentimelineio\schema copying src\py-opentimelineio\opentimelineio\schema\marker.py -> build\lib.win-amd64-3.10\opentimelineio\schema copying src\py-opentimelineio\opentimelineio\schema\schemadef.py -> build\lib.win-amd64-3.10\opentimelineio\schema copying src\py-opentimelineio\opentimelineio\schema\serializable_collection.py -> build\lib.win-amd64-3.10\opentimelineio\schema copying src\py-opentimelineio\opentimelineio\schema\stack.py -> build\lib.win-amd64-3.10\opentimelineio\schema copying src\py-opentimelineio\opentimelineio\schema\timeline.py -> build\lib.win-amd64-3.10\opentimelineio\schema copying src\py-opentimelineio\opentimelineio\schema\track.py -> build\lib.win-amd64-3.10\opentimelineio\schema copying src\py-opentimelineio\opentimelineio\schema\transition.py -> build\lib.win-amd64-3.10\opentimelineio\schema copying src\py-opentimelineio\opentimelineio\schema\init.py -> build\lib.win-amd64-3.10\opentimelineio\schema creating build\lib.win-amd64-3.10\opentimelineio\schemadef copying src\py-opentimelineio\opentimelineio\schemadef\init.py -> build\lib.win-amd64-3.10\opentimelineio\schemadef creating build\lib.win-amd64-3.10\opentimelineview copying src\opentimelineview\console.py -> build\lib.win-amd64-3.10\opentimelineview copying src\opentimelineview\details_widget.py -> build\lib.win-amd64-3.10\opentimelineview copying src\opentimelineview\ruler_widget.py -> build\lib.win-amd64-3.10\opentimelineview copying src\opentimelineview\settings.py -> build\lib.win-amd64-3.10\opentimelineview copying src\opentimelineview\timeline_widget.py -> build\lib.win-amd64-3.10\opentimelineview copying src\opentimelineview\track_widgets.py -> build\lib.win-amd64-3.10\opentimelineview copying src\opentimelineview\init.py -> build\lib.win-amd64-3.10\opentimelineview creating build\lib.win-amd64-3.10\opentimelineio_contrib copying contrib\opentimelineio_contrib\init.py -> build\lib.win-amd64-3.10\opentimelineio_contrib creating build\lib.win-amd64-3.10\opentimelineio_contrib\adapters copying contrib\opentimelineio_contrib\adapters\advanced_authoring_format.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\adapters copying contrib\opentimelineio_contrib\adapters\ale.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\adapters copying contrib\opentimelineio_contrib\adapters\burnins.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\adapters copying contrib\opentimelineio_contrib\adapters\extern_maya_sequencer.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\adapters copying contrib\opentimelineio_contrib\adapters\extern_rv.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\adapters copying contrib\opentimelineio_contrib\adapters\fcpx_xml.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\adapters copying contrib\opentimelineio_contrib\adapters\ffmpeg_burnins.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\adapters copying contrib\opentimelineio_contrib\adapters\hls_playlist.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\adapters copying contrib\opentimelineio_contrib\adapters\kdenlive.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\adapters copying contrib\opentimelineio_contrib\adapters\maya_sequencer.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\adapters copying contrib\opentimelineio_contrib\adapters\rv.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\adapters copying contrib\opentimelineio_contrib\adapters\xges.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\adapters copying contrib\opentimelineio_contrib\adapters\init.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\adapters creating build\lib.win-amd64-3.10\opentimelineio_contrib\adapters\aaf_adapter copying contrib\opentimelineio_contrib\adapters\aaf_adapter\aaf_writer.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\adapters\aaf_adapter copying contrib\opentimelineio_contrib\adapters\aaf_adapter\init.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\adapters\aaf_adapter running egg_info writing OpenTimelineIO.egg-info\PKG-INFO writing dependency_links to OpenTimelineIO.egg-info\dependency_links.txt writing entry points to OpenTimelineIO.egg-info\entry_points.txt writing requirements to OpenTimelineIO.egg-info\requires.txt writing top-level names to OpenTimelineIO.egg-info\top_level.txt reading manifest file 'OpenTimelineIO.egg-info\SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no files found matching 'CHANGELOG.md' no previously-included directories found matching '.github' no previously-included directories found matching 'docs' no previously-included directories found matching 'doxygen' warning: no previously-included files found matching '.gitmodules' warning: no previously-included files matching '.git' found under directory 'src' warning: no previously-included files found matching '.readthedocs.yml' warning: no previously-included files found matching 'readthedocs-conda.yml' warning: no previously-included files found matching '.codecov.yml' warning: no previously-included files found matching '.gitlab-ci.yml' warning: no previously-included files found matching '.travis.yml' warning: no previously-included files found matching '.pdf' warning: no previously-included files found matching 'CODE_OF_CONDUCT.md' warning: no previously-included files found matching 'CONTRIBUTING.md' warning: no previously-included files found matching 'CONTRIBUTORS.md' warning: no previously-included files found matching 'contrib\opentimelineio_contrib\adapters\Makefile' warning: no previously-included files found matching 'Makefile' warning: no previously-included files found matching '*.DS_Store' warning: no previously-included files found matching '.clang-format' no previously-included directories found matching 'contrib\opentimelineio_contrib\adapters\tests' no previously-included directories found matching 'maintainers' no previously-included directories found matching 'tests' no previously-included directories found matching 'src\deps\pybind11\tools\clang' no previously-included directories found matching 'src\deps\rapidjson\thirdparty' adding license file 'LICENSE.txt' adding license file 'NOTICE.txt' writing manifest file 'OpenTimelineIO.egg-info\SOURCES.txt' copying src\py-opentimelineio\opentimelineio\adapters\builtin_adapters.plugin_manifest.json -> build\lib.win-amd64-3.10\opentimelineio\adapters creating build\lib.win-amd64-3.10\opentimelineio_contrib\application_plugins creating build\lib.win-amd64-3.10\opentimelineio_contrib\application_plugins\rv creating build\lib.win-amd64-3.10\opentimelineio_contrib\application_plugins\rv\example_otio_reader copying contrib\opentimelineio_contrib\application_plugins\rv\example_otio_reader\PACKAGE -> build\lib.win-amd64-3.10\opentimelineio_contrib\application_plugins\rv\example_otio_reader copying contrib\opentimelineio_contrib\application_plugins\rv\example_otio_reader\example_otio_reader_plugin.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\application_plugins\rv\example_otio_reader copying contrib\opentimelineio_contrib\application_plugins\rv\example_otio_reader\otio_reader.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\application_plugins\rv\example_otio_reader creating build\lib.win-amd64-3.10\opentimelineio_contrib\application_plugins\tests copying contrib\opentimelineio_contrib\application_plugins\tests\init__.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\application_plugins\tests copying contrib\opentimelineio_contrib\application_plugins\tests\test_rv_reader.py -> build\lib.win-amd64-3.10\opentimelineio_contrib\application_plugins\tests copying contrib\opentimelineio_contrib\adapters\contrib_adapters.plugin_manifest.json -> build\lib.win-amd64-3.10\opentimelineio_contrib\adapters running build_ext running OTIO build_ext running cmake check Traceback (most recent call last): File "D:\development\blender-git\build_windows_Release_x64_vc16_Release\bin\Release\3.2\python\lib\site-packages\pip_vendor\pep517\in_process_in_process.py", line 349, in main() File "D:\development\blender-git\build_windows_Release_x64_vc16_Release\bin\Release\3.2\python\lib\site-packages\pip_vendor\pep517\in_process_in_process.py", line 331, in main json_out['return_val'] = hook(**hook_input['kwargs']) File "D:\development\blender-git\build_windows_Release_x64_vc16_Release\bin\Release\3.2\python\lib\site-packages\pip_vendor\pep517\in_process_in_process.py", line 248, in build_wheel return _build_backend().build_wheel(wheel_directory, config_settings, File "C:\Users\Kumiko\AppData\Local\Temp\pip-build-env-jwsg8rzb\overlay\Lib\site-packages\setuptools\build_meta.py", line 244, in build_wheel return self._build_with_temp_dir(['bdist_wheel'], '.whl', File "C:\Users\Kumiko\AppData\Local\Temp\pip-build-env-jwsg8rzb\overlay\Lib\site-packages\setuptools\build_meta.py", line 229, in _build_with_temp_dir self.run_setup() File "C:\Users\Kumiko\AppData\Local\Temp\pip-build-env-jwsg8rzb\overlay\Lib\site-packages\setuptools\build_meta.py", line 174, in run_setup exec(compile(code, file, 'exec'), locals()) File "setup.py", line 264, in setup( File "C:\Users\Kumiko\AppData\Local\Temp\pip-build-env-jwsg8rzb\overlay\Lib\site-packages\setuptools\init__.py", line 155, in setup return distutils.core.setup(**attrs) File "C:\Users\Kumiko\AppData\Local\Temp\pip-build-env-jwsg8rzb\overlay\Lib\site-packages\setuptools_distutils\core.py", line 148, in setup return run_commands(dist) File "C:\Users\Kumiko\AppData\Local\Temp\pip-build-env-jwsg8rzb\overlay\Lib\site-packages\setuptools_distutils\core.py", line 163, in run_commands dist.run_commands() File "C:\Users\Kumiko\AppData\Local\Temp\pip-build-env-jwsg8rzb\overlay\Lib\site-packages\setuptools_distutils\dist.py", line 967, in run_commands self.run_command(cmd) File "C:\Users\Kumiko\AppData\Local\Temp\pip-build-env-jwsg8rzb\overlay\Lib\site-packages\setuptools_distutils\dist.py", line 986, in run_command cmd_obj.run() File "C:\Users\Kumiko\AppData\Local\Temp\pip-build-env-jwsg8rzb\overlay\Lib\site-packages\wheel\bdist_wheel.py", line 299, in run self.run_command('build') File "C:\Users\Kumiko\AppData\Local\Temp\pip-build-env-jwsg8rzb\overlay\Lib\site-packages\setuptools_distutils\cmd.py", line 313, in run_command self.distribution.run_command(command) File "C:\Users\Kumiko\AppData\Local\Temp\pip-build-env-jwsg8rzb\overlay\Lib\site-packages\setuptools_distutils\dist.py", line 986, in run_command cmd_obj.run() File "C:\Users\Kumiko\AppData\Local\Temp\pip-build-env-jwsg8rzb\overlay\Lib\site-packages\setuptools_distutils\command\build.py", line 135, in run self.run_command(cmd_name) File "C:\Users\Kumiko\AppData\Local\Temp\pip-build-env-jwsg8rzb\overlay\Lib\site-packages\setuptools_distutils\cmd.py", line 313, in run_command self.distribution.run_command(command) File "C:\Users\Kumiko\AppData\Local\Temp\pip-build-env-jwsg8rzb\overlay\Lib\site-packages\setuptools_distutils\dist.py", line 986, in run_command cmd_obj.run() File "setup.py", line 57, in run self.build() File "setup.py", line 71, in build self.cmake_preflight_check() File "setup.py", line 140, in cmake_preflight_check raise RuntimeError(stderr.strip()) RuntimeError: CMake Error at C:/Users/Kumiko/AppData/Local/Temp/pip-build-env-jwsg8rzb/overlay/Lib/site-packages/cmake/data/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message): Could NOT find Python (missing: Python_LIBRARIES Python_INCLUDE_DIRS Interpreter Development.Module) Call Stack (most recent call first): C:/Users/Kumiko/AppData/Local/Temp/pip-build-env-jwsg8rzb/overlay/Lib/site-packages/cmake/data/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE) C:/Users/Kumiko/AppData/Local/Temp/pip-build-env-jwsg8rzb/overlay/Lib/site-packages/cmake/data/share/cmake-3.22/Modules/FindPython.cmake:561 (find_package_handle_standard_args) CMakeLists.txt:49 (find_package)

ERROR: Failed building wheel for opentimelineio Failed to build opentimelineio ERROR: Could not build wheels for opentimelineio which use PEP 517 and cannot be installed directly WARNING: You are using pip version 21.2.4; however, version 22.0.4 is available.

meshula commented 2 years ago

Hello Gattung, thanks for the details. The cmake error indicates that the Python headers and libraries corresponding to the Python libraries in your copy of Blender are not being detected.

The one thing I recall from others' experiences in building OTIO with Blender is that if you can set up the build such that cmake can find corresponding headers and libraries, the build will succeed.

Unfortunately the Blender build environment is not one I am that familiar with. Perhaps someone has details on how to set this up, or better recollection than I on solving this issue.

If I remember, people have built OTIO separately into a standard Python environment corresponding to Blender's python version, then manually moved it into Blender's site-packages area.

werwack commented 2 years ago

Hi @Gattung, I'm the developer of Shot Manager. Indeed at the moment the current wheel for OTIO is not compatible with the Python version in Blender 3.1 and 3.2 so its install is failing. And I recognize that this fail is not so well handled by the actual version of Shot Manager (V1.7.10).

I'm currently working on both topics and a new release of Shot Manager should be release next week. On the OTIO side, thanks to the help of @JeanChristopheMorinPerso and a teammate, we forked and managed to generate the wheels for Windows plateform for Python 3.10. I'm currently testing them - as much as I can - and we should be able to submit a merge request very soon. Hopefully it will be integrated in OTIO and an official set of wheels will be placed on PyPi so that the installation of Shot Manager can work again.

So stay tuned ;)

werwack commented 2 years ago

@JeanChristopheMorinPerso Hi Jean-Christophe, I'm currently testing the wheel I generated for Otio 0.15 for Python 3.10 in Blender 3.1. The creation of the wheel went well and so does the installation. But when I call the function to get the version I get an error. On 0.14 this works fine. Is ther something wrong on my side or is this an issue in 0.15?

Thank you

On 0.14: image

And on 0.15: image

meshula commented 2 years ago

I see the same thing.

Python 3.10.2 | packaged by conda-forge | (main, Mar  8 2022, 16:02:23) [Clang 11.1.0 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import opentimelineio as otio
>>> otio.__version__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'opentimelineio' has no attribute '__version__'
JeanChristopheMorinPerso commented 2 years ago

The __version__ variable is added by the setup.py script, here. So if it's missing, check if you have any errors when running a build.

meshula commented 2 years ago

No problems reported:

╰─ pip install .
Processing /private/var/tmp/opentimelineio-umbrella/OpenTimelineIO-mirror
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: pyaaf2~=1.4.0 in /Library/Application Support/xxx/x86_64_python3_pyside6/lib/python3.10/site-packages (from OpenTimelineIO==0.15.0.dev1) (1.4.0)
Building wheels for collected packages: OpenTimelineIO
  Building wheel for OpenTimelineIO (pyproject.toml) ... done
  Created wheel for OpenTimelineIO: filename=OpenTimelineIO-0.15.0.dev1-cp310-cp310-macosx_11_0_x86_64.whl size=1283726 sha256=26227cdee0e5c5bd224dc21ee53b58e54847632c36c3472d9bb40a6f5c7dff70
  Stored in directory: /Users/nporcino/Library/Caches/pip/wheels/01/01/6a/03aaf6d7c7ab02f2210238e97022fb025deaf14bb9d4e1723a
Successfully built OpenTimelineIO
Installing collected packages: OpenTimelineIO
Successfully installed OpenTimelineIO-0.15.0.dev1
meshula commented 2 years ago

Looks like that bit of setup.py is not running. __init__.py in the published location does not have the DUNDER bits in it.

JeanChristopheMorinPerso commented 2 years ago

https://github.com/PixarAnimationStudios/OpenTimelineIO/pull/1238 is the culprit I think. build_py runs before build_ext.

werwack commented 2 years ago

Thank you. I will try again once this merge request is merged. @JeanChristopheMorinPerso Maybe it is better to create the wheel for 3.10 on a stable 0.14 release? What do you think?

JeanChristopheMorinPerso commented 2 years ago

@werwack You can open a Pull Request that targets the master branch, and a 0.14.2 release could be made if the TSC determines it's the way to go. So what's important is to first create a pull request so the process/discussions can be started.

JeanChristopheMorinPerso commented 2 years ago

Oh, and maybe it wasn't clear, but the issue you found @werwack is not specific to Python 3.10. The issue should affects all python versions.

JeanChristopheMorinPerso commented 2 years ago

I created a PR and it got merged in master. Anyone interested can test the generated wheels by going to https://github.com/PixarAnimationStudios/OpenTimelineIO/actions/runs/2046354939 while being logged in, and download the wheels zip in the Artifacts section. Then extract the files from the zip file and pip install <path to extracted files> should to the trick.

werwack commented 2 years ago

Hi @JeanChristopheMorinPerso, thank you for the PR and the support for Python 3.1. Do you know if by any chance the corresponding wheel (whether for 0.14 or 0.15) will be pushed on PyPi? Or maybe I should include the wheels directly into my Blender addon?

JeanChristopheMorinPerso commented 2 years ago

Pushing to PyPI will require a release, which is out of my control. The best I can do is to tag the TSC members (@meshula, @jminor, @ssteinbach and @reinecke) and and ask if this can be added to the agenda of the next TSC meeting, scheduled on March 31 at 1pm EDT (see https://lists.aswf.io/g/otio-discussion/viewevent?repeatid=17408&eventid=1448520&calstart=2022-03-31 for more details).

werwack commented 2 years ago

@JeanChristopheMorinPerso Unfortunately I won't we available to attend to the meeting this Thursday, but I would appreciated if the push on PyPi could be discussed. I also feel concerned about the issue related to the XML file format btw (#839 Thanks to you all for your help and attention to these points!

meshula commented 2 years ago

@werwack With regards to fcp xml issue, the request is out for someone who can test the fix to submit a PR. It does seem straight forward, but needs someone familiar with the problem to give it a shot and verify that a fix works. We can raise it at the tsc.

danielskovli commented 2 years ago

I created a PR and it got merged in master. Anyone interested can test the generated wheels by going to https://github.com/PixarAnimationStudios/OpenTimelineIO/actions/runs/2046354939 while being logged in, and download the wheels zip in the Artifacts section. Then extract the files from the zip file and pip install <path to extracted files> should to the trick.

Just wanted to add that this method works well for me with Blender 3.1. Compiles and installs as expected.

werwack commented 2 years ago

Hi Daniel, Nick, Jean-Christophe,

I just posted a message saying that I still had the issue of the "__version__" information on the wheels but after some more check this was a wrong setting on my side, so ignore this previous message if you see it.

@danielskovli Thank you very much for the test on Blender. I've integrated the wheels related to Python 3.10, for each plateform, on the latest version of Ubisoft Shot Manager, my add-on for Blender. Works on Win64, cannot test on Mac nor on Linux but finger crossed ;) @JeanChristopheMorinPerso @meshula: Thanks a lot for all your help and efforts on this topic and for the support on OTIO. Some contributions are still out of reach for me, I do appologize.

Best regards,