注意,这些都是在GoogleColab中运行的
.so
扩展模块是用C++/Cuda编写的,并使用Ninja构建的
我遇到的问题是理解为什么我无法导入这个.so
扩展模块
正如我所说,我正在使用Google Colab。令人难以置信的困惑是,当我cd
进入包含.so
扩展模块_ext
的目录时,我能够完美地导入它,并且所有预期的功能都可以工作。但是,当我试图通过一系列导入从.py
文件导入它时
即
File
x
importsy
which importsz
which imports said.so
extension module.
它说找不到模块。我已尝试将文件添加到sys.path,但没有任何效果
下面是文件夹结构和colab代码/错误输出
├── CenterNet
│ ├── data
│ ├── exp
│ ├── experiments
│ ├── images
│ ├── LICENSE
│ ├── models
│ ├── NOTICE
│ ├── readme
│ ├── README.md
│ ├── requirements.txt
│ └── src
│ ├── demo.py
│ ├── _init_paths.py
│ ├── lib
│ │ ├── datasets
│ │ ├── detectors
│ │ ├── external
│ │ ├── logger.py
│ │ ├── models
│ │ │ ├── data_parallel.py
│ │ │ ├── decode.py
│ │ │ ├── losses.py
│ │ │ ├── model.py
│ │ │ ├── networks
│ │ │ │ ├── DCNv2
│ │ │ │ │ ├── build
│ │ │ │ │ │ ├── lib.linux-x86_64-3.6
│ │ │ │ │ │ │ └── _ext.cpython-36m-x86_64-linux-gnu.so
│ │ │ │ │ │ └── temp.linux-x86_64-3.6
│ │ │ │ │ ├── DCNv2.egg-info
│ │ │ │ │ ├── dcn_v2_onnx.py
│ │ │ │ │ ├── dcn_v2.py
│ │ │ │ │ ├── _ext.cpython-36m-x86_64-linux-gnu.so # <-- The file I want to import.
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── make.sh
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── setup.py
│ │ │ │ │ ├── src
│ │ │ │ │ │ ├── cpu
│ │ │ │ │ │ ├── cuda
│ │ │ │ │ │ ├── dcn_v2.h
│ │ │ │ │ │ └── vision.cpp
│ │ │ │ │ ├── testcpu.py
│ │ │ │ │ └── testcuda.py
│ │ │ │ ├── dlav0.py
│ │ │ │ ├── large_hourglass.py
│ │ │ │ ├── msra_resnet.py
│ │ │ │ ├── pose_dla_dcn.py
│ │ │ │ ├── __pycache__
│ │ │ │ └── resnet_dcn.py
│ │ │ ├── __pycache__
│ │ │ │ ├── decode.cpython-36.pyc
│ │ │ │ ├── model.cpython-36.pyc
│ │ │ │ └── utils.cpython-36.pyc
│ │ │ ├── scatter_gather.py
│ │ │ └── utils.py
│ │ ├── opts.py
│ │ ├── __pycache__
│ │ ├── trains
│ │ └── utils
│ ├── main.py
│ ├── test.py
│ └── tools
%cd $root_dir
%cd CenterNet/src/lib/models/networks/DCNv2
!ls
import _ext
import sys
print('I exist at - ', _ext.__file__, ' !')
sys.path.insert(0, _ext.__file__)
%cd $root_dir/CenterNet/src
!python demo.py ctdet --demo /content/CenterNet/images/19064748793_bb942deea1_k.jpg --load_model ../models/ddd_3dop.pth
输出
/content
/content/CenterNet/src/lib/models/networks/DCNv2
build _ext.cpython-36m-x86_64-linux-gnu.so __pycache__ testcpu.py
DCNv2.egg-info __init__.py README.md testcuda.py
dcn_v2_onnx.py LICENSE setup.py
dcn_v2.py make.sh src
I exist at - /content/CenterNet/src/lib/models/networks/DCNv2/_ext.cpython-36m-x86_64-linux-gnu.so !
/content/CenterNet/src
['/content/CenterNet/src/lib/models/networks/DCNv2/_ext.cpython-36m-x86_64-linux-gnu.so', '/content/CenterNet/src/lib', '/content/CenterNet/src', '/env/python', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/root/.local/lib/python3.6/site-packages', '/root/.local/lib/python3.6/site-packages/pycocotools-2.0-py3.6-linux-x86_64.egg', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']
Traceback (most recent call last):
File "demo.py", line 16, in <module>
from detectors.detector_factory import detector_factory
File "/content/CenterNet/src/lib/detectors/detector_factory.py", line 5, in <module>
from .exdet import ExdetDetector
File "/content/CenterNet/src/lib/detectors/exdet.py", line 21, in <module>
from .base_detector import BaseDetector
File "/content/CenterNet/src/lib/detectors/base_detector.py", line 11, in <module>
from models.model import create_model, load_model
File "/content/CenterNet/src/lib/models/model.py", line 12, in <module>
from .networks.pose_dla_dcn import get_pose_net as get_dla_dcn
File "/content/CenterNet/src/lib/models/networks/pose_dla_dcn.py", line 16, in <module>
from .DCNv2.dcn_v2 import DCN
File "/content/CenterNet/src/lib/models/networks/DCNv2/dcn_v2.py", line 17, in <module>
import _ext as _backend
ModuleNotFoundError: No module named '_ext'
我不知道为什么当我将cd
模块导入到它所包含的目录中时,我能够导入_ext
模块,但无法导入其他模块;即使添加到sys.path!任何帮助都将不胜感激
目前没有回答
相关问题 更多 >
编程相关推荐