You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

虚拟环境中自定义Python库访问外部文件及权限问题求助

解决自定义库aiautotest中adb工具的PermissionError问题

这个问题核心是两个原因:一是你的setup.py配置没正确包含adb可执行文件,二是打包安装时adb的执行权限丢失了。下面一步步搞定:

1. 修正package_data配置,确保adb被完整打包

你当前的package_data只匹配了core/android/static/*,但adb在core/android/static/adb/mac/子目录下,需要递归包含所有子文件。修改这部分配置:

package_data={
    'aiautotest': ["config/*"],
    'airtest': ["report/*", "core/android/static/**/*"]  # 用**/*递归匹配所有子目录文件
},

这样打包时才会把adb可执行文件和相关目录都包含进去。

2. 恢复adb的执行权限

打包成egg文件时,文件的可执行权限通常不会被保留,所以安装后adb没有执行权限,才会触发PermissionError。有两种解决方式:

方法一:手动添加权限(快速临时修复)

找到虚拟环境中adb的实际路径,比如你报错里的路径:

/Users/xmly/venv/aiautotest/lib/python3.7/site-packages/aiautotest-1.0-py3.7.egg/airtest/core/android/static/adb/mac/adb

执行命令赋予执行权限:

chmod +x /Users/xmly/venv/aiautotest/lib/python3.7/site-packages/aiautotest-1.0-py3.7.egg/airtest/core/android/static/adb/mac/adb

方法二:在setup.py中配置自动权限(永久解决)

通过自定义安装命令,让安装完成后自动给adb加执行权限。修改后的setup.py如下:

from setuptools import find_packages, setup
from setuptools.command.install import install
import os

class CustomInstall(install):
    def run(self):
        # 先执行默认安装流程
        install.run(self)
        # 定位adb文件路径
        adb_path = os.path.join(self.install_lib, 'airtest', 'core', 'android', 'static', 'adb', 'mac', 'adb')
        # 赋予执行权限
        if os.path.exists(adb_path):
            os.chmod(adb_path, 0o755)  # 0o755表示所有者可读写执行,其他用户可读可执行

setup(
    name='aiautotest',
    version='1.0',
    packages=find_packages(),
    package_data={
        'aiautotest': ["config/*"],
        'airtest': ["report/*", "core/android/static/**/*"]
    },
    entry_points="""
    [console_scripts]
    aiautotest = aiautotest.__main__:main
    """,
    cmdclass={'install': CustomInstall}  # 注册自定义安装命令
)

之后重新打包安装(python setup.py bdist_egg和python setup.py install),安装过程会自动给adb加上执行权限。

验证修复效果

重新运行你的测试代码,应该不会再出现PermissionError了。如果还有问题,可以检查adb路径是否正确,或者确认权限是否真的被赋予。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:00:58