Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for Python 3.10? #1224

Closed
werwack opened this issue Feb 21, 2022 · 24 comments · Fixed by #1256
Closed

Support for Python 3.10? #1224

werwack opened this issue Feb 21, 2022 · 24 comments · Fixed by #1256
Labels
TSC Slated for discussion at the next TSC meeting wheels

Comments

@werwack
Copy link

werwack commented Feb 21, 2022

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
Copy link
Collaborator

meshula commented Feb 21, 2022

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
Copy link
Author

werwack commented Feb 21, 2022

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
Copy link
Collaborator

meshula commented Feb 21, 2022

@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
Copy link
Member

JeanChristopheMorinPerso commented Feb 21, 2022

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 #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
Copy link
Member

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
Copy link

Gattung commented Mar 15, 2022

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
Copy link
Collaborator

meshula commented Mar 15, 2022

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
Copy link
Author

werwack commented Mar 18, 2022

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
Copy link
Author

werwack commented Mar 23, 2022

@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
Copy link
Collaborator

meshula commented Mar 23, 2022

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
Copy link
Member

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
Copy link
Collaborator

meshula commented Mar 23, 2022

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
Copy link
Collaborator

meshula commented Mar 23, 2022

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
Copy link
Member

JeanChristopheMorinPerso commented Mar 23, 2022

#1238 is the culprit I think. build_py runs before build_ext.

@werwack
Copy link
Author

werwack commented Mar 24, 2022

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
Copy link
Member

JeanChristopheMorinPerso commented Mar 24, 2022

@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
Copy link
Member

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
Copy link
Member

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
Copy link
Author

werwack commented Mar 27, 2022

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
Copy link
Member

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).

@meshula meshula added TSC Slated for discussion at the next TSC meeting wheels labels Mar 27, 2022
@werwack
Copy link
Author

werwack commented Mar 28, 2022

@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
Copy link
Collaborator

meshula commented Mar 28, 2022

@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.

@reinecke reinecke added this to the Public Beta 15 milestone Mar 28, 2022
@danielskovli
Copy link

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
Copy link
Author

werwack commented Apr 24, 2022

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,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
TSC Slated for discussion at the next TSC meeting wheels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants