我使用的是PyCharm,通常依靠alt + enter快捷方式来自动导入类和函数。
但是,它不使用绝对导入路径。它在本地运行良好,但是当我推送到GitHub时,我的测试在TravisCI中失败了。
有谁知道强制PyCharm以绝对路径导入的方法?
drone_squadron.api.drone_api如果我使用像这样api.drone_api的东西,则远程测试无法找到导入,则需要像这样导入。这适用于所有本地进口。
我希望所有时间始终都是绝对进口。相对进口使我在打包项目时遇到了问题。我认为始终使用绝对导入会更容易。
https://github.com/sarcoma/drone_squadron_api_prototype
.
??? coverage.xml
??? LICENSE.md
??? pytest.ini
??? README.md
??? requirements.txt
??? drone_squadron
? ??? app.py
? ??? endpoints.http
? ??? flask.cfg
? ??? __init__.py
? ??? load_fixtures.py
? ??? main.py
? ??? router.py
? ??? schema.py
? ??? test_flask.cfg
? ??? api
? ? ??? base_api.py
? ? ??? drone_api.py
? ? ??? gimbal_api.py
? ? ??? __init__.py
? ? ??? price_api.py
? ? ??? round_type_api.py
? ? ??? scanner_api.py
? ? ??? squadron_api.py
? ? ??? steering_api.py
? ? ??? thruster_api.py
? ? ??? user_api.py
? ? ??? weapon_api.py
? ??? authentication
? ? ??? __init__.py
? ? ??? login.py
? ??? crud
? ? ??? base_crud.py
? ? ??? drone_crud.py
? ? ??? gimbal_crud.py
? ? ??? __init__.py
? ? ??? item_crud.py
? ? ??? price_crud.py
? ? ??? round_type_crud.py
? ? ??? scanner_crud.py
? ? ??? squadron_crud.py
? ? ??? status_crud.py
? ? ??? steering_crud.py
? ? ??? thruster_crud.py
? ? ??? user_crud.py
? ? ??? weapon_crud.py
? ??? database
? ? ??? database.py
? ? ??? drones.db
? ? ??? drones_test.db
? ? ??? __init__.py
? ??? enums
? ? ??? __init__.py
? ? ??? round_type.py
? ? ??? status.py
? ??? error
? ? ??? error.py
? ? ??? __init__.py
? ??? fixtures
? ? ??? gimbal_fixtures.py
? ? ??? __init__.py
? ? ??? round_type_fixtures.py
? ? ??? scanner_fixtures.py
? ? ??? status_fixtures.py
? ? ??? steering_fixtures.py
? ? ??? thruster_fixtures.py
? ? ??? user_fixtures.py
? ? ??? weapon_fixtures.py
? ??? model
? ? ??? base_model.py
? ? ??? drone_model.py
? ? ??? __init__.py
? ? ??? squadron_model.py
? ??? request
? ? ??? __init__.py
? ? ??? json_request_handler.py
? ??? response
? ? ??? __init__.py
? ? ??? json_response.py
? ??? service
? ? ??? calculate_cost.py
? ??? transformer
? ? ??? __init__.py
? ? ??? json_transformer.py
? ? ??? transformer.py
? ??? validation
? ??? abstract
? ? ??? __init__.py
? ? ??? validation_abstract.py
? ??? drone_validation.py
? ??? field.py
? ??? __init__.py
? ??? validation_link.py
? ??? validations.py
??? tests
??? drones_test.db
??? __init__.py
??? test_api
? ??? conftest.py
? ??? __init__.py
? ??? test_auth.py
? ??? test_drone.py
? ??? test_gimbal.py
? ??? test_price_list.py
? ??? test_round_type.py
? ??? test_scanner.py
? ??? test_squadron.py
? ??? test_steering.py
? ??? test_thruster.py
? ??? test_weapon.py
??? test_crud
??? conftest.py
??? __init__.py
??? test_drone_crud.py
??? test_gimbal_crud.py
??? test_scanner_crud.py
??? test_squadron_crud.py
??? test_status_crud.py
??? test_steering_crud.py
??? test_thruster_crud.py
??? test_user_crud.py
??? test_weapon_crud.py
Run Code Online (Sandbox Code Playgroud)
在Python中,导入可以是相对的也可以是绝对的。
从项目的根目录解析绝对导入:
import drone_squadron.api.drone_api
Run Code Online (Sandbox Code Playgroud)
相对导入是从当前python包中解析的。
import ..api.drone
Run Code Online (Sandbox Code Playgroud)
在您的情况下,问题不是相对/绝对混淆,PyCharm始终添加绝对导入。
问题在于,PyCharm可能会将drone_squadron您项目中的文件夹视为“根目录”。错了!根目录是与整个git项目相对应的顶级文件夹(包含LICENSE.md,README.md等的文件夹)
在PyCharm中,右键单击该文件夹drone_squadron,然后打开子菜单Mark directory as(在底部),然后选择Unmark as Source Root。
完成该操作后,将以您想要的方式添加您的导入。
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |