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

Python 3.9 Support #828

Closed
reinecke opened this issue Oct 30, 2020 · 13 comments · Fixed by #1080
Closed

Python 3.9 Support #828

reinecke opened this issue Oct 30, 2020 · 13 comments · Fixed by #1080
Labels
bug A problem, flaw, or broken functionality.

Comments

@reinecke
Copy link
Collaborator

There currently exists a rare crash condition that can occur with the combination of python 3.9.0 and pybind11 (for context see this ASWF thread or this pybind11 issue.

The tl;dr: There could be unexpected and unpredictable crashing in Python 3.9.0, this issue is set to be addressed in 3.9.1. After 3.9.1 is released we should enable CI for 3.9 and consider adding 3.9 to the badge in the readme.

We may also consider updating the python_requires to exclude 3.9.0, though we'd want to make sure we can do this in a way that signals to users why this is and steps to remedy (use 3.9.1 instead).

@reinecke reinecke added the bug A problem, flaw, or broken functionality. label Oct 30, 2020
reinecke added a commit to reinecke/OpenTimelineIO that referenced this issue Oct 30, 2020
…e context about the Python 3.9.0/pybind11 bug.
ssteinbach pushed a commit that referenced this issue Oct 30, 2020
* Added import aliasing for collections.abc module for python 3.9 support
* Created local alias for inspect.getargspec to address python 3+ deprecation warning
* Updated mutable sequence bindings to expose __next__ in compliance with PEP 3114.
* Updated collections.abc rename behavior to match six's and use collections_abc.
* Added python 3.9 to CI builds, updated python badge to match our CI builds - added 3.9 and corrected it still having 3.6 and missing 3.8.
* Updated the python 2/3 compatibility on the inspect.getargspec to match the python 3 naming rather than python 2.
* Removed python 3.9 from CI. See #828 for more context about the Python 3.9.0/pybind11 bug.
@ssteinbach
Copy link
Collaborator

It looks like 3.9.1 is released:
https://www.python.org/downloads/release/python-391/

I'm not sure about how the python_requires works, but I know we do some manual checks at the top of the setup.py to guard against ancient pip/setuptools versions.

@ssteinbach
Copy link
Collaborator

Note that there are a bunch of build warnings we'll need to tackle in 3.9:

src/deps/pybind11/include/pybind11/detail/internals.h:200:9: warning: 'PyEval_InitThreads' is deprecated [-Wdeprecated-declarations]
        PyEval_InitThreads();
        ^

@meshula
Copy link
Collaborator

meshula commented Feb 19, 2021

That looks like motivation to get pybind11 updated

@ssteinbach
Copy link
Collaborator

yeah, hoping that addresses this issue. Note that pybind11 is also seeing some weird CI failure: #874

@Tilix4
Copy link
Contributor

Tilix4 commented Jun 2, 2021

I don't know if it's completely relevant, but I've tried both the current master and the reinecke's feature/wheel-builds branch with Python3.9 and I get this error when importing:

>>> import opentimelineio
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Felix\AppData\Local\Programs\Python\Python39\lib\site-packages\opentimelineio\__init__.py", line 35, in <module>
    from . import (
  File "C:\Users\Felix\AppData\Local\Programs\Python\Python39\lib\site-packages\opentimelineio\exceptions.py", line 26, in <module>
    from . _otio import ( # noqa
ImportError: DLL load failed while importing _otio: A dynamic link library (DLL) initialization routine failed.

The funny thing is, I only get this error on my personal windows computer.

On my OSX and Windows at work, I get:

>>> import opentimeline
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'opentimeline'
>>> import opentimelineio
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\fdavid\Downloads\blender-2.93.0-stable+blender-v293-release.84da05a8b806-windows.amd64-release\blender-windows64\2.93\python\lib\site-packages\opentimelineio\__init__.py", line 35, in <module>
    from . import (
  File "C:\Users\fdavid\Downloads\blender-2.93.0-stable+blender-v293-release.84da05a8b806-windows.amd64-release\blender-windows64\2.93\python\lib\site-packages\opentimelineio\opentime.py", line 1, in <module>
    from . _opentime import ( # noqa
ModuleNotFoundError: No module named 'opentimelineio._opentime'

I've tried to investigate, without any success until now...

Everything works fine on Python<3.9

@Tilix4
Copy link
Contributor

Tilix4 commented Jun 3, 2021

After some new experimentation, it seems no any opentimelineio version work on Python3.9, they all raise the ModuleNotFoundError: No module named 'opentimelineio._opentime' error.

@vdtoorn
Copy link

vdtoorn commented Jun 3, 2021

I get the same error on python 3.8

@meshula
Copy link
Collaborator

meshula commented Jun 4, 2021

Separating out mac and windows for a second, is it possible we are being hit, on Windows, with the new platform specific dll search behavior? https://docs.python.org/3/library/os.html#os.add_dll_directory

If the _opentime.dll and .pyd files are in the same directory as the __init.py that invokes them, could you try adding a call to add_dll_directory to __init.py before the line of code that imports _opentime?

Perhaps we can come back to the mac after the issue with the windows wheel is resolved.

@Tilix4
Copy link
Contributor

Tilix4 commented Jul 26, 2021

Some inputs about that: I'm trying to install OTIO into Blender 2.93's Python, which uses python 3.9.2. Tested on MacOS and windows.

It doesn't work and I get this error:

Building wheel for OpenTimelineIO (PEP 517) ... error
  ERROR: Command errored out with exit status 1:
   command: /Users/felixdavid/Documents/Logiciels/OpenTimelineIO/.venv/bin/python3.9 /Users/felixdavid/Documents/Logiciels/OpenTimelineIO/.venv/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py build_wheel /var/folders/dh/48hvyv0d6gz4rx23cq8xxy940000gn/T/tmp248844cl
       cwd: /private/var/folders/dh/48hvyv0d6gz4rx23cq8xxy940000gn/T/pip-req-build-01nxgvld
  Complete output (198 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.macosx-10.13-x86_64-3.9
  creating build/lib.macosx-10.13-x86_64-3.9/opentimelineio
  copying src/py-opentimelineio/opentimelineio/test_utils.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio
  copying src/py-opentimelineio/opentimelineio/opentime.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio
  copying src/py-opentimelineio/opentimelineio/hooks.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio
  copying src/py-opentimelineio/opentimelineio/__init__.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio
  copying src/py-opentimelineio/opentimelineio/media_linker.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio
  copying src/py-opentimelineio/opentimelineio/exceptions.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio
  copying src/py-opentimelineio/opentimelineio/url_utils.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio
  creating build/lib.macosx-10.13-x86_64-3.9/opentimelineio/core
  copying src/py-opentimelineio/opentimelineio/core/_core_utils.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/core
  copying src/py-opentimelineio/opentimelineio/core/__init__.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/core
  copying src/py-opentimelineio/opentimelineio/core/mediaReference.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/core
  copying src/py-opentimelineio/opentimelineio/core/composable.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/core
  copying src/py-opentimelineio/opentimelineio/core/composition.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/core
  copying src/py-opentimelineio/opentimelineio/core/item.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/core
  creating build/lib.macosx-10.13-x86_64-3.9/opentimelineio/plugins
  copying src/py-opentimelineio/opentimelineio/plugins/manifest.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/plugins
  copying src/py-opentimelineio/opentimelineio/plugins/__init__.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/plugins
  copying src/py-opentimelineio/opentimelineio/plugins/python_plugin.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/plugins
  creating build/lib.macosx-10.13-x86_64-3.9/opentimelineio/algorithms
  copying src/py-opentimelineio/opentimelineio/algorithms/track_algo.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/algorithms
  copying src/py-opentimelineio/opentimelineio/algorithms/stack_algo.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/algorithms
  copying src/py-opentimelineio/opentimelineio/algorithms/timeline_algo.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/algorithms
  copying src/py-opentimelineio/opentimelineio/algorithms/__init__.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/algorithms
  copying src/py-opentimelineio/opentimelineio/algorithms/filter.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/algorithms
  creating build/lib.macosx-10.13-x86_64-3.9/opentimelineio/adapters
  copying src/py-opentimelineio/opentimelineio/adapters/otioz.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/adapters
  copying src/py-opentimelineio/opentimelineio/adapters/file_bundle_utils.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/adapters
  copying src/py-opentimelineio/opentimelineio/adapters/otio_json.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/adapters
  copying src/py-opentimelineio/opentimelineio/adapters/adapter.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/adapters
  copying src/py-opentimelineio/opentimelineio/adapters/__init__.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/adapters
  copying src/py-opentimelineio/opentimelineio/adapters/cmx_3600.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/adapters
  copying src/py-opentimelineio/opentimelineio/adapters/otiod.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/adapters
  copying src/py-opentimelineio/opentimelineio/adapters/fcp_xml.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/adapters
  creating build/lib.macosx-10.13-x86_64-3.9/opentimelineio/schema
  copying src/py-opentimelineio/opentimelineio/schema/timeline.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/schema
  copying src/py-opentimelineio/opentimelineio/schema/track.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/schema
  copying src/py-opentimelineio/opentimelineio/schema/transition.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/schema
  copying src/py-opentimelineio/opentimelineio/schema/external_reference.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/schema
  copying src/py-opentimelineio/opentimelineio/schema/image_sequence_reference.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/schema
  copying src/py-opentimelineio/opentimelineio/schema/__init__.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/schema
  copying src/py-opentimelineio/opentimelineio/schema/serializable_collection.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/schema
  copying src/py-opentimelineio/opentimelineio/schema/schemadef.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/schema
  copying src/py-opentimelineio/opentimelineio/schema/marker.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/schema
  copying src/py-opentimelineio/opentimelineio/schema/stack.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/schema
  copying src/py-opentimelineio/opentimelineio/schema/clip.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/schema
  copying src/py-opentimelineio/opentimelineio/schema/generator_reference.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/schema
  copying src/py-opentimelineio/opentimelineio/schema/effect.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/schema
  copying src/py-opentimelineio/opentimelineio/schema/foo.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/schema
  creating build/lib.macosx-10.13-x86_64-3.9/opentimelineio/schemadef
  copying src/py-opentimelineio/opentimelineio/schemadef/__init__.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/schemadef
  creating build/lib.macosx-10.13-x86_64-3.9/opentimelineio/console
  copying src/py-opentimelineio/opentimelineio/console/otiostat.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/console
  copying src/py-opentimelineio/opentimelineio/console/otiocat.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/console
  copying src/py-opentimelineio/opentimelineio/console/otioconvert.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/console
  copying src/py-opentimelineio/opentimelineio/console/console_utils.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/console
  copying src/py-opentimelineio/opentimelineio/console/__init__.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/console
  copying src/py-opentimelineio/opentimelineio/console/otiopluginfo.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/console
  copying src/py-opentimelineio/opentimelineio/console/autogen_plugin_documentation.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/console
  copying src/py-opentimelineio/opentimelineio/console/autogen_serialized_datamodel.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio/console
  creating build/lib.macosx-10.13-x86_64-3.9/opentimelineview
  copying src/opentimelineview/console.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineview
  copying src/opentimelineview/ruler_widget.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineview
  copying src/opentimelineview/timeline_widget.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineview
  copying src/opentimelineview/__init__.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineview
  copying src/opentimelineview/details_widget.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineview
  copying src/opentimelineview/settings.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineview
  copying src/opentimelineview/track_widgets.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineview
  creating build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib
  copying contrib/opentimelineio_contrib/__init__.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib
  creating build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters
  copying contrib/opentimelineio_contrib/adapters/kdenlive.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters
  copying contrib/opentimelineio_contrib/adapters/extern_rv.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters
  copying contrib/opentimelineio_contrib/adapters/advanced_authoring_format.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters
  copying contrib/opentimelineio_contrib/adapters/ffmpeg_burnins.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters
  copying contrib/opentimelineio_contrib/adapters/extern_maya_sequencer.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters
  copying contrib/opentimelineio_contrib/adapters/__init__.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters
  copying contrib/opentimelineio_contrib/adapters/fcpx_xml.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters
  copying contrib/opentimelineio_contrib/adapters/maya_sequencer.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters
  copying contrib/opentimelineio_contrib/adapters/rv.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters
  copying contrib/opentimelineio_contrib/adapters/xges.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters
  copying contrib/opentimelineio_contrib/adapters/ale.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters
  copying contrib/opentimelineio_contrib/adapters/hls_playlist.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters
  copying contrib/opentimelineio_contrib/adapters/burnins.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters
  creating build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters/tests
  copying contrib/opentimelineio_contrib/adapters/tests/test_hls_playlist_adapter.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters/tests
  copying contrib/opentimelineio_contrib/adapters/tests/tests_xges_adapter.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters/tests
  copying contrib/opentimelineio_contrib/adapters/tests/__init__.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters/tests
  copying contrib/opentimelineio_contrib/adapters/tests/test_fcpx_adapter.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters/tests
  copying contrib/opentimelineio_contrib/adapters/tests/test_kdenlive_adapter.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters/tests
  copying contrib/opentimelineio_contrib/adapters/tests/test_maya_sequencer.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters/tests
  copying contrib/opentimelineio_contrib/adapters/tests/test_aaf_adapter.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters/tests
  copying contrib/opentimelineio_contrib/adapters/tests/test_ale_adapter.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters/tests
  copying contrib/opentimelineio_contrib/adapters/tests/test_burnins.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters/tests
  copying contrib/opentimelineio_contrib/adapters/tests/test_rvsession.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters/tests
  creating build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters/aaf_adapter
  copying contrib/opentimelineio_contrib/adapters/aaf_adapter/__init__.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters/aaf_adapter
  copying contrib/opentimelineio_contrib/adapters/aaf_adapter/aaf_writer.py -> build/lib.macosx-10.13-x86_64-3.9/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 '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 '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.macosx-10.13-x86_64-3.9/opentimelineio/adapters
  creating build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/application_plugins
  creating build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/application_plugins/rv
  creating build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/application_plugins/rv/example_otio_reader
  copying contrib/opentimelineio_contrib/application_plugins/rv/example_otio_reader/PACKAGE -> build/lib.macosx-10.13-x86_64-3.9/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.macosx-10.13-x86_64-3.9/opentimelineio_contrib/application_plugins/rv/example_otio_reader
  copying contrib/opentimelineio_contrib/application_plugins/rv/example_otio_reader/otio_reader.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/application_plugins/rv/example_otio_reader
  creating build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/application_plugins/tests
  copying contrib/opentimelineio_contrib/application_plugins/tests/__init__.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/application_plugins/tests
  copying contrib/opentimelineio_contrib/application_plugins/tests/test_rv_reader.py -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/application_plugins/tests
  copying contrib/opentimelineio_contrib/adapters/contrib_adapters.plugin_manifest.json -> build/lib.macosx-10.13-x86_64-3.9/opentimelineio_contrib/adapters
  running build_ext
  running OTIO build_ext
  running cmake check
  Traceback (most recent call last):
    File "/Users/felixdavid/Documents/Logiciels/OpenTimelineIO/.venv/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 280, in <module>
      main()
    File "/Users/felixdavid/Documents/Logiciels/OpenTimelineIO/.venv/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 263, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "/Users/felixdavid/Documents/Logiciels/OpenTimelineIO/.venv/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 204, in build_wheel
      return _build_backend().build_wheel(wheel_directory, config_settings,
    File "/private/var/folders/dh/48hvyv0d6gz4rx23cq8xxy940000gn/T/pip-build-env-zyf8k08g/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 221, in build_wheel
      return self._build_with_temp_dir(['bdist_wheel'], '.whl',
    File "/private/var/folders/dh/48hvyv0d6gz4rx23cq8xxy940000gn/T/pip-build-env-zyf8k08g/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 207, in _build_with_temp_dir
      self.run_setup()
    File "/private/var/folders/dh/48hvyv0d6gz4rx23cq8xxy940000gn/T/pip-build-env-zyf8k08g/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 150, in run_setup
      exec(compile(code, __file__, 'exec'), locals())
    File "setup.py", line 268, in <module>
      setup(
    File "/private/var/folders/dh/48hvyv0d6gz4rx23cq8xxy940000gn/T/pip-build-env-zyf8k08g/overlay/lib/python3.9/site-packages/setuptools/__init__.py", line 153, in setup
      return distutils.core.setup(**attrs)
    File "/Applications/Blender2.93.app/Contents/Resources/2.93/python/lib/python3.9/distutils/core.py", line 148, in setup
      dist.run_commands()
    File "/Applications/Blender2.93.app/Contents/Resources/2.93/python/lib/python3.9/distutils/dist.py", line 966, in run_commands
      self.run_command(cmd)
    File "/Applications/Blender2.93.app/Contents/Resources/2.93/python/lib/python3.9/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/private/var/folders/dh/48hvyv0d6gz4rx23cq8xxy940000gn/T/pip-build-env-zyf8k08g/overlay/lib/python3.9/site-packages/wheel/bdist_wheel.py", line 299, in run
      self.run_command('build')
    File "/Applications/Blender2.93.app/Contents/Resources/2.93/python/lib/python3.9/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/Applications/Blender2.93.app/Contents/Resources/2.93/python/lib/python3.9/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/Applications/Blender2.93.app/Contents/Resources/2.93/python/lib/python3.9/distutils/command/build.py", line 135, in run
      self.run_command(cmd_name)
    File "/Applications/Blender2.93.app/Contents/Resources/2.93/python/lib/python3.9/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/Applications/Blender2.93.app/Contents/Resources/2.93/python/lib/python3.9/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "setup.py", line 66, in run
      self.build()
    File "setup.py", line 80, in build
      self.cmake_preflight_check()
    File "setup.py", line 144, in cmake_preflight_check
      raise RuntimeError(stderr.strip())
  RuntimeError: CMake Error at /private/var/folders/dh/48hvyv0d6gz4rx23cq8xxy940000gn/T/pip-build-env-zyf8k08g/overlay/lib/python3.9/site-packages/cmake/data/CMake.app/Contents/share/cmake-3.21/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
    Could NOT find Python (missing: Python_INCLUDE_DIRS Interpreter
    Development.Module)
  Call Stack (most recent call first):
    /private/var/folders/dh/48hvyv0d6gz4rx23cq8xxy940000gn/T/pip-build-env-zyf8k08g/overlay/lib/python3.9/site-packages/cmake/data/CMake.app/Contents/share/cmake-3.21/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
    /private/var/folders/dh/48hvyv0d6gz4rx23cq8xxy940000gn/T/pip-build-env-zyf8k08g/overlay/lib/python3.9/site-packages/cmake/data/CMake.app/Contents/share/cmake-3.21/Modules/FindPython.cmake:556 (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

While installing it into a locally installed Python 3.9.2 works.

@Tilix4
Copy link
Contributor

Tilix4 commented Jul 26, 2021

After some new experimentation, it seems no any opentimelineio version work on Python3.9, they all raise the ModuleNotFoundError: No module named 'opentimelineio._opentime' error.

I must precise I don't get this issue any more. Then the problem to address seems to be on the build stage only and not at the import opentimelineio one.
To confirm this behaviour, I installed OTIO into Blender's site-packages using the local python 3.9.2 and the import works perfectly.

@JeanChristopheMorinPerso
Copy link
Member

JeanChristopheMorinPerso commented Aug 15, 2021

is it possible we are being hit, on Windows, with the new platform specific dll search behavior?

@meshula I've tried OTIO with python 3.9 a couple of times on Windows and it was working from what I remember.

As for the other platforms, I haven't seen any problem lately when building with Python 3.9.1+.

@Tilix4
Copy link
Contributor

Tilix4 commented Aug 23, 2021

Python headers will be included into Blender's build: https://developer.blender.org/D12228

@meshula
Copy link
Collaborator

meshula commented Aug 23, 2021

That's nice to see!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug A problem, flaw, or broken functionality.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants