无法访问用setuptools打包的非python文件

2024-04-19 03:58:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创造一个设置.py我的python3.5.2项目的文件,并运行到与非Python文件有关的问题。你知道吗

下面是我的粗略设置:

/
--/seleniumspec
  -- cli.py
  --/plugins
    -- html_reporter.py
    -- template.html
    -- junit_reporter.py
    -- template.xml

setup.py

from setuptools import setup, find_packages

setup(
    name="seleniumspec",
    version="0.1.0",
    description="A test framework written for selenium",
    keywords="selenium test testing",
    packages=find_packages(exclude=['dist', 'output', 'seleniumspec.egg-info', 'specs']),
    install_requires=["selenium", 'Jinja2'],
    entry_points={
        'console_scripts': [
            'seleniumspec=seleniumspec:cli.main'
        ]
    },
    package_data={
        '': ['*template.xml', '*template.html']
    }
)

我的清单.in文件:

include *template.html
include *template.xml

以及JUnit reporter,了解更多内容:

import os
import codecs
from typing import cast
import pkgutil
import jinja2
from seleniumspec.plugin import *
from seleniumspec.runner import Runner


def render_file_template(path, context):
    """
    Render jinja2 template from file on disk
    :param path:
    :param context:
    :return:
    """
    path, filename = os.path.split(path)
    return jinja2.Environment(
        loader=jinja2.FileSystemLoader(path or './')
    ).get_template(filename).render(context)


class JUnitReporterPlugin(Plugin):
    """
    Prints run information/results to junit report
    """

    config_section = "junit_reporter"

    def runner_stop(self, event: RunnerStopPluginEvent):
        runner = cast(Runner, event.runner)
        run_specs = runner.run_specs
        failed_results = runner.failed_results
        results = runner.results

        results_path = runner.config.get('results_path', '')
        template_path = self.config.get('template_path', './seleniumspec/plugins/junit_template.xml')
        report_path = self.config.get('report_path', 'junit.xml')
        full_report_path = os.path.join('.', results_path, report_path)

        junit_report = render_file_template(template_path, {
            'run_specs': run_specs,
            'results': results,
            'failed_results': failed_results
        })

        with codecs.open(full_report_path, 'w', 'utf-8') as f:
            f.write(junit_report)

当我在seleniumspec项目目录下运行它时,一切都正常。当我将seleniumspec导入到另一个项目时,它会抱怨模板.xml找不到。我检查了我的venv站点包,并确认文件确实作为sdist的一部分被复制了

有人能指出我遗漏了什么吗?你知道吗


Tags: 文件pathrunfrompyimportreporthtml