隱形的亼

文章 评论 浏览 31

隱形的亼 2025-02-20 22:04:54

不需要字节。 Java很好地处理文字。

使用字符串#split制作零件的数组。

制作一系列字符串零件的流。

使用对象使用流#映射将每个字符串零件分为integer对象,以制造新对象的另一个流。

将这些新的整数对象收集到未约化的list中。

List < Integer > integers = 
    Arrays
    .stream( 
        "15, 52, 94, 20, 92, 109".split( ", " ) 
    )
    .map( Integer :: valueOf )
    .toList() ;

请参阅此 code在indeone.com 中实时运行。

No need for bytes. Java handles text well.

Use String#split to make an array of the parts.

Make a stream of that array of string parts.

Parse each String part into a Integer object using Stream#map to make another stream of the new objects.

Collect these new Integer objects into an unmodifiable List.

List < Integer > integers = 
    Arrays
    .stream( 
        "15, 52, 94, 20, 92, 109".split( ", " ) 
    )
    .map( Integer :: valueOf )
    .toList() ;

See this code run live at Ideone.com.

如何将字符串转换为数组/arraylist

隱形的亼 2025-02-20 20:22:18

意图,通常用作 明确的意图

显式意图,在同一应用程序中的两个活动之间进行通信。

并且意图是这样的:

class MainActivity : FlutterActivity() {

   fun openActivityTwo(){
        startActivity(Intent(this@MainActivity,ActivityTwo::class.java))
    }
}

class ActivityTwo : FlutterActivity() {}

我看到您的代码非常类似于 flutter教程:在flutter应用中托管本机android视图,带有平台视图

如教程所示,您不需要MethodChannel

只需在MainActivity中注册Android本机视图,


class MainActivity : FlutterActivity() {
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        flutterEngine
            .platformViewsController
            .registry
            .registerViewFactory("key", NativeViewFactory())
    }


}

然后在dart中使用,


class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  static const String _title = 'Flutter Code Sample';

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: _title,
      home: Scaffold(
        body: One(),
      ),
    );
  }
}

class One extends StatefulWidget {
  const One({Key? key}) : super(key: key);

  @override
  State<One> createState() => _OneState();
}

class _OneState extends State<One> {
  @override
  Widget build(BuildContext context) {
    // This is used in the platform side to register the view.
    const String viewType = 'key';
    // Pass parameters to the platform side.
    const Map<String, dynamic> creationParams = <String, dynamic>{};

    return PlatformViewLink(
      viewType: viewType,
      surfaceFactory: (context, controller) {
        return AndroidViewSurface(
          controller: controller as AndroidViewController,
          gestureRecognizers: const <Factory<OneSequenceGestureRecognizer>>{},
          hitTestBehavior: PlatformViewHitTestBehavior.opaque,
        );
      },
      onCreatePlatformView: (params) {
        return PlatformViewsService.initSurfaceAndroidView(
          id: params.id,
          viewType: viewType,
          layoutDirection: TextDirection.ltr,
          creationParams: creationParams,
          creationParamsCodec: const StandardMessageCodec(),
          onFocus: () {
            params.onFocusChanged(true);
          },
        )
          ..addOnPlatformViewCreatedListener(params.onPlatformViewCreated)
          ..create();
      },
    );
  }
}

您可以在没有方法频道的情况下处理相关数据

Intent, usually used as Explicit Intent,

Explicit Intent, communicates between two activities inside the same application.

And the intent is used like this:

class MainActivity : FlutterActivity() {

   fun openActivityTwo(){
        startActivity(Intent(this@MainActivity,ActivityTwo::class.java))
    }
}

class ActivityTwo : FlutterActivity() {}

And I see that your code is very much like the flutter tutorial: Hosting native Android views in your Flutter app with Platform Views

as the tutorial shows, you don't need the MethodChannel

simply register the android native view in MainActivity


class MainActivity : FlutterActivity() {
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        flutterEngine
            .platformViewsController
            .registry
            .registerViewFactory("key", NativeViewFactory())
    }


}

then used in dart


class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  static const String _title = 'Flutter Code Sample';

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: _title,
      home: Scaffold(
        body: One(),
      ),
    );
  }
}

class One extends StatefulWidget {
  const One({Key? key}) : super(key: key);

  @override
  State<One> createState() => _OneState();
}

class _OneState extends State<One> {
  @override
  Widget build(BuildContext context) {
    // This is used in the platform side to register the view.
    const String viewType = 'key';
    // Pass parameters to the platform side.
    const Map<String, dynamic> creationParams = <String, dynamic>{};

    return PlatformViewLink(
      viewType: viewType,
      surfaceFactory: (context, controller) {
        return AndroidViewSurface(
          controller: controller as AndroidViewController,
          gestureRecognizers: const <Factory<OneSequenceGestureRecognizer>>{},
          hitTestBehavior: PlatformViewHitTestBehavior.opaque,
        );
      },
      onCreatePlatformView: (params) {
        return PlatformViewsService.initSurfaceAndroidView(
          id: params.id,
          viewType: viewType,
          layoutDirection: TextDirection.ltr,
          creationParams: creationParams,
          creationParamsCodec: const StandardMessageCodec(),
          onFocus: () {
            params.onFocusChanged(true);
          },
        )
          ..addOnPlatformViewCreatedListener(params.onPlatformViewCreated)
          ..create();
      },
    );
  }
}

you can handle the relevant data without method channel

将文本从主动脉传递到Kotlin中的儿童文本视图

隱形的亼 2025-02-20 11:50:15

比较基础,plyrdplyr解决方案,似乎基本的速度仍然快得多!

library(plyr)
library(dplyr)   

df <- data_frame(Group1=rep(LETTERS, each=1000),
             Group2=rep(rep(1:10, each=100),26), 
             Value=rnorm(26*1000))

microbenchmark(Base=df %>%
             split(list(.$Group2, .$Group1)),
           dplyr=df %>% 
             group_by(Group1, Group2) %>% 
             do(data = (.)) %>% 
             select(data) %>% 
             lapply(function(x) {(x)}) %>% .[[1]],
           plyr=dlply(df, c("Group1", "Group2"), as.tbl),
           times=50) 

给出:

Unit: milliseconds
  expr      min        lq      mean    median        uq       max neval
  Base 12.82725  13.38087  16.21106  14.58810  17.14028  41.67266    50
  dplyr 25.59038 26.66425  29.40503  27.37226  28.85828  77.16062   50
  plyr 99.52911  102.76313 110.18234 106.82786 112.69298 140.97568    50

Comparing the base, plyr and dplyr solutions, it still seems the base one is much faster!

library(plyr)
library(dplyr)   

df <- data_frame(Group1=rep(LETTERS, each=1000),
             Group2=rep(rep(1:10, each=100),26), 
             Value=rnorm(26*1000))

microbenchmark(Base=df %>%
             split(list(.$Group2, .$Group1)),
           dplyr=df %>% 
             group_by(Group1, Group2) %>% 
             do(data = (.)) %>% 
             select(data) %>% 
             lapply(function(x) {(x)}) %>% .[[1]],
           plyr=dlply(df, c("Group1", "Group2"), as.tbl),
           times=50) 

Gives:

Unit: milliseconds
  expr      min        lq      mean    median        uq       max neval
  Base 12.82725  13.38087  16.21106  14.58810  17.14028  41.67266    50
  dplyr 25.59038 26.66425  29.40503  27.37226  28.85828  77.16062   50
  plyr 99.52911  102.76313 110.18234 106.82786 112.69298 140.97568    50

使用dplyr group_by模拟split():返回数据帧列表

隱形的亼 2025-02-19 19:31:01

您需要做的是通过使用:

Docker System Prune https://docs.docker.com/config/pruning/

这将删除未使用的容器,干净的图像等。

what you need to do is clean your docker system by using:

docker system prune : https://docs.docker.com/config/pruning/

This will remove unused containers, clean images and more.

如何将码头量的未使用空间释放到系统中?

隱形的亼 2025-02-19 18:28:31

您的代码:

def submit_button(self):
    self.name = self.ids.the_name.text
    self.time = f'{self.ids.time_spinner_1.text}:{self.ids.time_spinner_2.text}'
    self.date = f'{self.ids.date_spinner_1.text}/{self.ids.date_spinner_2.text}'

更改name secondwindow 屏幕的属性,因此尝试将屏幕更改为第二将不再起作用。看来您正在尝试将名称用于其他目的。我建议您使用带有不同名称的变量。

Your code:

def submit_button(self):
    self.name = self.ids.the_name.text
    self.time = f'{self.ids.time_spinner_1.text}:{self.ids.time_spinner_2.text}'
    self.date = f'{self.ids.date_spinner_1.text}/{self.ids.date_spinner_2.text}'

changes the name property of the SecondWindow Screen, so trying to change Screen to the second will no longer work. It looks like you are trying to use name for some other purpose. I suggest you use a variable with a different name.

Kivy- Screenmanager说尽管它在那里,但它仍未识别另一个屏幕名称?

隱形的亼 2025-02-19 16:48:26

如果您可以使用用于过滤的LIDAR数据,则可以使用 nofollow noreferrer“> laserscanangularboundsfilter


或手机

: href =“ http://docs.ros.org/en/melodic/api/sensor_msgs/html/mmsg/mmsg/laserscan.html” rel =“ nofollow noreferrer”> laserscan. /code>和data.angle_min似乎不丢弃测量。那必须手动完成。
例如,为了保持简单,您的LIDAR从0到360度(Angle_min = 0,Angle_max = 2*pi)以1度增量进行扫描,并且您希望将其限制为[90 .. 270度]范围。从float32 []范围数组的开始和结束时,您将不需要使用25%的时间

for range(90, 270+1):
    # Do your  data.ranges[i]  calculations here with limited angle range

来概括您要实现将学位转换为data.ranges [] index的函数。如果我们假设Angle_max = 2*pi and angle_min = 0,那将是这样(伪代码):

ind_start = int(len(data.ranges) * (your_angle_min / (2 * pi)))
ind_end = int(len(data.ranges) * (your_angle_max / (2 * pi)))
for range(ind_start, ind_end):
    # data.ranges[i] is filtered to contain ranges from angles [your_angle_min .. your_angle_max]

If you ok with publishing lidar data for filtering you could use LaserScanAngularBoundsFilter


Or manually:

From LaserScan.msg data.angle_max and data.angle_min doesn't seem to discard measurements. That must be done manually.
For example to keep it simple you have lidar which scans from 0 to 360 deg (angle_min = 0, angle_max = 2*pi) at 1 deg increments and you want to limit it to [90 .. 270 deg] range. You would need to not use 25% from the start and end of float32[] ranges array

for range(90, 270+1):
    # Do your  data.ranges[i]  calculations here with limited angle range

To generalize you would want to implement function which converts degrees to data.ranges[] index. If we assume that angle_max=2*pi and angle_min=0 that would be something like this (pseudo code):

ind_start = int(len(data.ranges) * (your_angle_min / (2 * pi)))
ind_end = int(len(data.ranges) * (your_angle_max / (2 * pi)))
for range(ind_start, ind_end):
    # data.ranges[i] is filtered to contain ranges from angles [your_angle_min .. your_angle_max]

我如何使动态重新配置具有更改LiDar可以看到的角度的能力?

隱形的亼 2025-02-19 10:26:14

您快到了,只是在扩展您的想法。
我在以下示例中有硬编码的结束日期,但是可以根据要求更改。

日期CTE只是在所需范围内建立日期。
在下一个子查询(T1)中,还有另外两个列 - 最大日期和列S_SHARES的列MD,以根据购买(添加)(添加)或减去出售的股票运行总和。

然后,我们从日期最大日期(列MD)和原始日期之间的两个集合值中选择。

WITH RECURSIVE dates(date1) AS (
  select date('2022-02-01')
  UNION ALL
  SELECT  date(date1, '+1 day')
  FROM dates
  WHERE date1 <  date('2022-02-10')
) select d.date1,depot,ticker, s_shares 
from dates d, 
(select date1, 
case 
coalesce(lead(date1) over (partition by depot, ticker order by date1),0) 
when 0 then date('2022-02-10', '+1 day')
else lead(date1) over (partition by depot, ticker order by date1) 
end md,
depot, ticker, buyorsell,
sum(case when buyorsell = 'SELL' then -(Shares) else Shares end) 
over (partition by depot, ticker order by Date1 ROWS UNBOUNDED PRECEDING) s_shares
from tic) t1
where d.date1< t1.md
and d.date1>= t1.date1
order by depot, ticker, d.date1;

请参阅小提琴

You are almost there, just expanded on your idea.
I have hard-coded end date in below example, but that can be changed as per requirement.

The dates CTE is just building dates within the needed range.
In the next sub-query (t1), there are two more columns added - column md for max date and column s_shares to get a running sum of shares based on if share is bought (added) or subtracted if sold.

We then select from the two sets values between dates max date (column md) and original date.

WITH RECURSIVE dates(date1) AS (
  select date('2022-02-01')
  UNION ALL
  SELECT  date(date1, '+1 day')
  FROM dates
  WHERE date1 <  date('2022-02-10')
) select d.date1,depot,ticker, s_shares 
from dates d, 
(select date1, 
case 
coalesce(lead(date1) over (partition by depot, ticker order by date1),0) 
when 0 then date('2022-02-10', '+1 day')
else lead(date1) over (partition by depot, ticker order by date1) 
end md,
depot, ticker, buyorsell,
sum(case when buyorsell = 'SELL' then -(Shares) else Shares end) 
over (partition by depot, ticker order by Date1 ROWS UNBOUNDED PRECEDING) s_shares
from tic) t1
where d.date1< t1.md
and d.date1>= t1.date1
order by depot, ticker, d.date1;

Refer to the fiddle here.

从SQLite中的不完整交易时间序列获取每日股票投资组合

隱形的亼 2025-02-19 07:38:23

设法自己解决。只需访问文件目录所述错误,并用其中的随机数和字母删除文件夹即可。重新运行程序,它将正确生成所需的文件。

Managed to solve it myself. Simply visit the file directory the error mentions and delete the folder with the random numbers and letters in it. Rerun the program and it'll properly generate the files needed.

Keras“ SavedModel文件不存在...”对于从在线URL中检索的模型

隱形的亼 2025-02-18 14:08:12

关于您的错误,它说dreversheetapp.spreadsheetid()不是一个函数,因为它实际上不存在。您正在寻找 expraineSheetapp.openbyid()

关于您的问题,当函数以这种方式定义时不会调用它们。您的呼叫发生在exportsheet();定义函数后。

In regards to your error, it's saying SpreadsheetApp.spreadsheetId() is not a function because it doesn't actually exist. You're looking for SpreadsheetApp.openById().

In regards to your question, functions are not called when they are defined in this manner. Your call happens at ExportSheet(); after you've defined the function.

在定义时,您可以在无需实际调用气体的情况下定义功能吗?

隱形的亼 2025-02-18 09:47:17

基本R解决方案可以是创建自定义功能并将其应用于每个组,即使

MyFunction <- function(x){
  month_begin = length(x)
  paid_off = sum(x == 'C')
  num_of_pastdues = sum(x %in% 0:5)
  no_loan = sum(x == 'X')
  target = ifelse(any(x %in% 2:5), 1, 0)
  return(c(month_begin=month_begin, paid_off=paid_off, num_of_pastdues=num_of_pastdues, no_loan=no_loan, target=target))
}

res <- t(sapply(split(df$status, df$id), MyFunction))

             month_begin paid_off num_of_pastdues no_loan target
#    5008804 16          13       2               1       0     
#    5008805 15          12       2               1       0

其成为具有列ID的数据框架,然后

res_df <- data.frame(res)
res_df$id <- rownames(res_df)
rownames(res_df) <- NULL

res_df

#month_begin paid_off num_of_pastdues no_loan target      id
#1          16       13               2       1      0 5008804
#2          15       12               2       1      0 5008805

A base R solution can be to create a custom function and apply it on each group, i.e.

MyFunction <- function(x){
  month_begin = length(x)
  paid_off = sum(x == 'C')
  num_of_pastdues = sum(x %in% 0:5)
  no_loan = sum(x == 'X')
  target = ifelse(any(x %in% 2:5), 1, 0)
  return(c(month_begin=month_begin, paid_off=paid_off, num_of_pastdues=num_of_pastdues, no_loan=no_loan, target=target))
}

res <- t(sapply(split(df$status, df$id), MyFunction))

             month_begin paid_off num_of_pastdues no_loan target
#    5008804 16          13       2               1       0     
#    5008805 15          12       2               1       0

To make it a data frame with the column id then,

res_df <- data.frame(res)
res_df$id <- rownames(res_df)
rownames(res_df) <- NULL

res_df

#month_begin paid_off num_of_pastdues no_loan target      id
#1          16       13               2       1      0 5008804
#2          15       12               2       1      0 5008805

根据R中的几个条件创建新列

隱形的亼 2025-02-18 08:27:31

您可以使用此公式

= ifError(index($ c $ 2:$ d $ 6,$ b $ 2:$ b $ 6 = $ b10),c $ 8,匹配(c $ 9,$ c $ 1:$ d $ d $ 1,0) ),““)

或者
= ifError(index($ c $ 2:$ d $ 6,$ b $ 2:$ b $ 6 = $ b17),value(权利(c $ 15,1)),匹配(c $ 16,$ c $ 1:$ d $ 1 $ 1 ,0)),“”)

”示例“

You can use this formula

=IFERROR(INDEX(FILTER($C$2:$D$6,$B$2:$B$6=$B10),C$8,MATCH(C$9,$C$1:$D$1,0)),"")

or
=IFERROR(INDEX(FILTER($C$2:$D$6,$B$2:$B$6=$B17),VALUE(RIGHT(C$15,1)),MATCH(C$16,$C$1:$D$1,0)),"")

Example

转换数据 - excel

隱形的亼 2025-02-17 20:08:17

表是恕我直言,实际上是静态的,我会尝试的:

import requests
from bs4 import BeautifulSoup

import pandas as pd

headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:101.0) Gecko/20100101 Firefox/101.0",
}

soup = (
    BeautifulSoup(
        requests.get(
            "https://ciffc.net/en/ciffc/ext/member/sitrep/",
            headers=headers,
        ).text,
        "lxml",
    ).find("div", {"data-title": "E: Preparedness Levels"})
)

df = pd.read_html(str(soup), flavor="lxml")[0]
print(df)

这应该一致输出:

   Agency  APL                                           Comments
0      BC    1                                                NaN
1      YT    3  Yukon is at a level 3 prep level - but will tr...
2      AB    2                                                NaN
3      SK    1                                                NaN
4      MB    1                                                NaN
5      ON    1                                                NaN
6      QC    1                                                NaN
7      NL    2                                                NaN
8      NB    1                                                NaN
9      NS    1                                                NaN
10     PE    1                                                NaN
11     PC    1                                                NaN

The tables are, IMHO, actually static and I'd try this:

import requests
from bs4 import BeautifulSoup

import pandas as pd

headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:101.0) Gecko/20100101 Firefox/101.0",
}

soup = (
    BeautifulSoup(
        requests.get(
            "https://ciffc.net/en/ciffc/ext/member/sitrep/",
            headers=headers,
        ).text,
        "lxml",
    ).find("div", {"data-title": "E: Preparedness Levels"})
)

df = pd.read_html(str(soup), flavor="lxml")[0]
print(df)

This should consistently output:

   Agency  APL                                           Comments
0      BC    1                                                NaN
1      YT    3  Yukon is at a level 3 prep level - but will tr...
2      AB    2                                                NaN
3      SK    1                                                NaN
4      MB    1                                                NaN
5      ON    1                                                NaN
6      QC    1                                                NaN
7      NL    2                                                NaN
8      NB    1                                                NaN
9      NS    1                                                NaN
10     PE    1                                                NaN
11     PC    1                                                NaN

如何在不使用其数据框架索引的情况下用熊猫刮擦特定的表?

隱形的亼 2025-02-17 13:58:42

好的,我明白了:

我很难找到需要导入的库的路径(@io_abseil_py // absl/testing:absltest)。
这是已

py_binary(
  testonly = 1,
  name="testing_example",
  deps = [
    "@io_abseil_py//absl:app", 
    "@io_abseil_py//absl/testing:absltest",
  ],
  srcs = ["testing_example.py"],
) 

解决的更新构建。输出:

$ bazel run //example_py:testing_example
(...)
INFO: Analyzed target //example_py:testing_example (0 packages loaded, 0 targets configured).
INFO: Found 1 target...
Target //example_py:testing_example up-to-date:
  bazel-bin/example_py/testing_example
INFO: Elapsed time: 0.236s, Critical Path: 0.01s
INFO: 1 process: 1 internal.
INFO: Build completed successfully, 1 total action
INFO: Build completed successfully, 1 total action
Running tests under Python 3.9.7: /Users/maion/opt/anaconda3/bin/python3
[ RUN      ] TestStringMethods.test_isupper
[       OK ] TestStringMethods.test_isupper
[ RUN      ] TestStringMethods.test_split
[       OK ] TestStringMethods.test_split
[ RUN      ] TestStringMethods.test_upper
[       OK ] TestStringMethods.test_upper
----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK

Ok, I got it:

I was having trouble finding the path to the library I needed to import (@io_abseil_py//absl/testing:absltest).
Here is the updated BUILD

py_binary(
  testonly = 1,
  name="testing_example",
  deps = [
    "@io_abseil_py//absl:app", 
    "@io_abseil_py//absl/testing:absltest",
  ],
  srcs = ["testing_example.py"],
) 

Solved. Output:

$ bazel run //example_py:testing_example
(...)
INFO: Analyzed target //example_py:testing_example (0 packages loaded, 0 targets configured).
INFO: Found 1 target...
Target //example_py:testing_example up-to-date:
  bazel-bin/example_py/testing_example
INFO: Elapsed time: 0.236s, Critical Path: 0.01s
INFO: 1 process: 1 internal.
INFO: Build completed successfully, 1 total action
INFO: Build completed successfully, 1 total action
Running tests under Python 3.9.7: /Users/maion/opt/anaconda3/bin/python3
[ RUN      ] TestStringMethods.test_isupper
[       OK ] TestStringMethods.test_isupper
[ RUN      ] TestStringMethods.test_split
[       OK ] TestStringMethods.test_split
[ RUN      ] TestStringMethods.test_upper
[       OK ] TestStringMethods.test_upper
----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK

Bazel Run:testing_example返回ModulenotFoundError:无模块名为&#x27; absl.testing&#x27;

隱形的亼 2025-02-17 12:15:34

问题在于某些形式的命名惯例。例如。

<input name = 'name' ngModel name='itemName'>

在这里,我认为“ ngmodel名称”将是{对象对象}的键,而是“名称”是键。

The problem lies with some naming convention in the forms. For eg.

<input name = 'name' ngModel name='itemName'>

Here, I thought the 'ngModel name' would be the key of the {object Object} but instead the 'name' is the key.

如何解决我的角度渲染问题

隱形的亼 2025-02-17 08:30:30

我自己找到了答案。似乎如果您删除行templates_path = ['_templates']它有效:

# -- Project information -----------------------------------------------------

project = 'mytest'
copyright = '2022, Me'
author = 'Me'
release = '0.1.0'


# -- General configuration ---------------------------------------------------

extensions = [
    'sphinx_book_theme'
]
# templates_path = ['_templates'] # REMOVE THIS LINE TO WORK
language = 'python'
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']


# -- Options for HTML output -------------------------------------------------

html_theme = 'sphinx_book_theme'
html_static_path = ['_static']

如果您在>“模板”中有某些内容,我怀疑您需要创建sidebar -logo.html在这里。不确定如何。

I found the answer myself. It seems if you remove the line templates_path = ['_templates'] it works:

# -- Project information -----------------------------------------------------

project = 'mytest'
copyright = '2022, Me'
author = 'Me'
release = '0.1.0'


# -- General configuration ---------------------------------------------------

extensions = [
    'sphinx_book_theme'
]
# templates_path = ['_templates'] # REMOVE THIS LINE TO WORK
language = 'python'
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']


# -- Options for HTML output -------------------------------------------------

html_theme = 'sphinx_book_theme'
html_static_path = ['_static']

If you have something in the templates, I suspect you need to create the sidebar-logo.html here. Not sure how though.

用sphinx_book_theme构建sphinx

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文